It was a speed optimization (nearly 40% gain in speed), but as you pointed out, fails when the searched element is in the checkSet. I'll land a patch as soon as possible.
--Fabio 2009/3/10 Igor <[email protected]>: > > Thanks for reply! > Your solution works for me, but right now i'm curious, what > functionality was carried by removed rows :) > > On 6 мар, 23:43, Fabio Buffoni <[email protected]> wrote: >> I think the problem is the cache optimization for previousSibling when >> the search match is in the checkSet. >> >> If you need a quick fix, removing the if >> if ( sibDir && elem.nodeType === 1 ) { ... } >> in dirNode and dirNodeCheck should fix the problem (didn't try it) >> >> --Fabio >> >> On Fri, Mar 6, 2009 at 4:15 PM, d3r1v3d (Gavin Mulligan) >> >> <[email protected]> wrote: >> >> > Actually, I found a bit more time to actually attempt the 'patch' I >> > suggested in the previous post. I want to tweak my suggestion to: >> >> > 1.3.2 jquery.js: >> > - 2357: match = checkSet[elem.sizset]; >> > + 2357: match = true; >> >> > That fixes the error found in the test code given in the root of this >> > list thread, however I have no idea what the far-reaching implications >> > of that change are in the grand scheme of jQuery. :) >> >> > - Gavin >> >> > On Mar 6, 9:37 am, "d3r1v3d (Gavin Mulligan)" <[email protected]> >> > wrote: >> >> I did a bit of snooping and think I've tracked down what the problem >> >> seems to be. In selector.js, I believe the issues emanates from >> >> changes made to the dirCheck function. >> >> >> In 1.3.2, the match variable is set to the 'elem.sizset' index of the >> >> checkSet array. This checkSet array contains the 'selector validation >> >> status' (my terminology) of a series of sibling divs (in this case). >> >> The following code, in 1.3.2 dirCheck(...), should set the match >> >> variable equal to the element which matches the given selector based >> >> on the current element in checkSet being investigated: >> >> if ( elem.sizcache === doneName ) { >> >> match = checkSet[elem.sizset]; >> >> break; >> >> >> } >> >> >> In the test file, the div in checkSet being investigated is the second >> >> div in the body and elem, in this case, is the div#prev which matches >> >> to the given selector. I believe that match should be set equal to >> >> elem here instead of checkSet[elem.sizset] or, in other words: >> >> - match = checkSet[elem.sizSet]; >> >> + match = elem; >> >> >> This is similar to how 1.3.1 handles this case. However, I am nowhere >> >> near familiar enough with the selector code to suggest this as a >> >> definitive patch. Does someone who is intimately familiar with the >> >> selector.js code think this would do the trick? >> >> >> - Gavin >> >> >> On Mar 6, 8:32 am, Cloudream <[email protected]> wrote: >> >> >> > nightly is 1.3.1 ... >> >> >> > On Fri, Mar 6, 2009 at 1:30 PM, Igor <[email protected]> wrote: >> >> >> > > Hi! >> >> > > Have been using your library for ages, it is awesome, thank you! >> >> >> > > Recently found some issues, that seems to be related to >> >> > > previousSibling ( "~" ) selector >> >> > > Can you point me to a place, where it is broken, since i afraid of >> >> > > using nightly builds in product >> >> >> > > Sample markup: >> >> > > <html> >> >> > > <head> >> >> > > <!-- 1.3.2. looks like broken --> >> >> > > <script type="text/javascript" src="http://ajax.googleapis.com/ajax/ >> >> > > libs/jquery/1.3.2/jquery.min.js"></script> >> >> > > <!-- Nightly. works --> <!-- >> >> > > <script type="text/javascript" src="http://code.jquery.com/nightlies/ >> >> > > jquery-nightly.js"></script> >> >> > > --><!-- 1.3.1. works --><!-- >> >> > > <script type="text/javascript" src="http://ajax.googleapis.com/ajax/ >> >> > > libs/jquery/1.3.1/jquery.min.js"></script> >> >> > > --> >> >> > > <script type="text/javascript"> >> >> > > $(document).ready(function(){ >> >> > > console.log($('#prev ~ div').length);/*expecting 1, >> >> > > got zero >> >> > > in >> >> > > 1.3.2*/ >> >> > > }); >> >> > > </script> >> >> > > </head> >> >> > > <body> >> >> > > <div id="prev">1</div> >> >> > > <div>2</div> >> >> > > </body> >> >> > > </html> > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---
