(no commit message)
authorJohn Resig <jeresig@gmail.com>
Sun, 25 Mar 2007 02:45:12 +0000 (02:45 +0000)
committerJohn Resig <jeresig@gmail.com>
Sun, 25 Mar 2007 02:45:12 +0000 (02:45 +0000)
src/selector/selector.js
src/selector/selectorTest.js

index 1c6d80c..cc37584 100644 (file)
@@ -61,7 +61,7 @@ jQuery.extend({
                        },
                        _prefix: "z=a[m[3]];if(!z||/href|src/.test(m[3]))z=jQuery.attr(a,m[3]);"
                },
-               "[": "jQuery.find(m[2],a).length"
+               "[": "parseInt(m[2])?jQuery.nth(a.parentNode.firstChild,parseInt(m[2]),'nextSibling',a)==a:jQuery.find(m[2],a).length"
        },
        
        // The regular expressions that power the parsing engine
index 9180743..59af2ff 100644 (file)
@@ -85,7 +85,7 @@ test("multiple", function() {
 });
 
 test("child and adjacent", function() {
-       expect(14);
+       expect(22);
        t( "Child", "p > a", ["simon1","google","groups","mark","yahoo","simon"] );
        t( "Child", "p> a", ["simon1","google","groups","mark","yahoo","simon"] );
        t( "Child", "p >a", ["simon1","google","groups","mark","yahoo","simon"] );
@@ -99,7 +99,18 @@ test("child and adjacent", function() {
        t( "Adjacent", "a+a", ["groups"] );
        t( "Adjacent", "p + p", ["ap","en","sap"] );
        t( "Comma, Child, and Adjacent", "a + a, code > a", ["groups","anchor1","anchor2"] );
+       
        t( "First Child", "p:first-child", ["firstp","sndp"] );
+       t( "Nth Child", "p:nth-child(1)", ["firstp","sndp"] );
+       t( "First Child, XPath", "p[1]", ["firstp","sndp"] );
+       
+       t( "Last Child", "p:last-child", ["sap"] );
+       t( "Last Child, XPath", "p[3]", ["sap"] );
+       
+       t( "Nth-child", "#main form > *:nth-child(2)", ["text2"] );
+       t( "Nth-child, XPath", "#main form > *[2]", ["text2"] );
+       t( "Nth-child", "#main form > :nth-child(2)", ["text2"] );
+       t( "Nth-child, XPath", "#main form > [2]", ["text2"] );
 });
 
 test("attributes", function() {
@@ -132,7 +143,7 @@ test("attributes", function() {
        t( ":not() Equals quoted attribute", "select:not([@name='select1'])", ["select2", "select3"]);
 });
 
-test("pseudo (:) selctors", function() {
+test("pseudo (:) selectors", function() {
        expect(30);
        t( "First Child", "p:first-child", ["firstp","sndp"] );
        t( "Last Child", "p:last-child", ["sap"] );