Skip to content
Permalink
Browse files

CHILD positions were being cached improperly. Tweaked it and added a …

…test to make sure it doesn't happen again. Fixes jQuery bug #3924.
  • Loading branch information...
jeresig committed Jan 21, 2009
1 parent 00b70c7 commit 626961c4a54cccaae0ecef81f2058cd0888611cc
Showing with 10 additions and 2 deletions.
  1. +1 −1 src/selector.js
  2. +9 −1 test/unit/selector.js
@@ -495,7 +495,7 @@ var Expr = Sizzle.selectors = {
CHILD: function(elem, match){
var type = match[1], parent = elem.parentNode;

var doneName = "child" + parent.childNodes.length;
var doneName = match[0];

if ( parent && (!parent[ doneName ] || !elem.nodeIndex) ) {
var count = 1;
@@ -141,7 +141,7 @@ test("multiple", function() {
});

test("child and adjacent", function() {
expect(44);
expect(45);
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"] );
@@ -169,6 +169,14 @@ test("child and adjacent", function() {

t( "First Child", "p:first-child", ["firstp","sndp"] );
t( "Nth Child", "p:nth-child(1)", ["firstp","sndp"] );

// Verify that the child position isn't being cached improperly
jQuery("p:first-child").after("<div></div>");
jQuery("p:first-child").before("<div></div>").next().remove();

t( "First Child", "p:first-child", [] );

reset();

t( "Last Child", "p:last-child", ["sap"] );
t( "Last Child", "a:last-child", ["simon1","anchor1","mark","yahoo","anchor2","simon"] );

0 comments on commit 626961c

Please sign in to comment.
You can’t perform that action at this time.