From 25b424134f9927a5bf0bab5cba836a0aa6c3cfc1 Mon Sep 17 00:00:00 2001 From: John Resig Date: Sun, 25 Mar 2007 02:45:12 +0000 Subject: [PATCH] --- src/selector/selector.js | 2 +- src/selector/selectorTest.js | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/selector/selector.js b/src/selector/selector.js index 1c6d80c..cc37584 100644 --- a/src/selector/selector.js +++ b/src/selector/selector.js @@ -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 diff --git a/src/selector/selectorTest.js b/src/selector/selectorTest.js index 9180743..59af2ff 100644 --- a/src/selector/selectorTest.js +++ b/src/selector/selectorTest.js @@ -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"] ); -- 1.7.10.4