aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-03-25 02:45:12 +0000
committerJohn Resig <jeresig@gmail.com>2007-03-25 02:45:12 +0000
commit25b424134f9927a5bf0bab5cba836a0aa6c3cfc1 (patch)
tree9cba863f74bfd9aa0faf5b9d3adbb9b0aa194473 /src
parentae208246fbd1708b72e822b61c9e24d3034d1a05 (diff)
downloadjquery-25b424134f9927a5bf0bab5cba836a0aa6c3cfc1.tar.gz
jquery-25b424134f9927a5bf0bab5cba836a0aa6c3cfc1.zip
Diffstat (limited to 'src')
-rw-r--r--src/selector/selector.js2
-rw-r--r--src/selector/selectorTest.js15
2 files changed, 14 insertions, 3 deletions
diff --git a/src/selector/selector.js b/src/selector/selector.js
index 1c6d80c1e..cc37584f5 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 918074327..59af2ff0b 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"] );