Liam, I think you're thinking of $("p, #foo").
Notice it's the difference between two params being passed in to the selector function (the original question) vs a single param that happens to be a comma separated list of selectors. On Feb 24, 6:00 am, Liam Potter <radioactiv...@gmail.com> wrote: > lol, but I'm interested in what jquery does with what I tell it. > > jQuery Lover wrote: > > That is how it works Liam !!! jQuery does not knows, it's told so... > > > ---- > > Read jQuery HowTo Resource - http://jquery-howto.blogspot.com > > > On Tue, Feb 24, 2009 at 6:49 PM, Liam Potter <radioactiv...@gmail.com> > > wrote: > > >> ok, but what in jquery knows that $("p", $("#foo")) should look for the p > >> tags inside of #foo, why does it treat it like $("#foo p")? > > >> jQuery Lover wrote: > > >>> Liam, you can use $("p", "#foo"). The second parameter must be a > >>> jQuery object or dom element... > > >>> ---- > >>> Read jQuery HowTo Resource - http://jquery-howto.blogspot.com > > >>> On Tue, Feb 24, 2009 at 6:44 PM, Liam Potter <radioactiv...@gmail.com> > >>> wrote: > > >>>> Hi Stehpan :p > > >>>> I understand that, I'm just not sure why $("p", $("#foo")) is not the > >>>> same > >>>> as $("p", "#foo") > > >>>> - Liam > > >>>> Stephan Veigl wrote: > > >>>>> Hi Lima, > > >>>>> 1) #foo is an ID and since IDs should be unique there has to bee only > >>>>> one #foo element > > >>>>> 2) $("p", $("#foo")) selects all <p> elements in the scope of the #foo > >>>>> element. > >>>>> In other words, it selects every <p> element under #foo in the DOM tree. > > >>>>> by(e) > >>>>> Stephan > > >>>>> 2009/2/24 Liam Potter <radioactiv...@gmail.com>: > > >>>>>> I've been following this discussion, but I need explaining why $("p", > >>>>>> $("#foo")) doesn't select all p tags and all #foo id's ? > > >>>>>> Stephan Veigl wrote: > > >>>>>>> Hi, > > >>>>>>> I've done some profiling on this, and $("p", $("#foo")) is faster than > >>>>>>> $("#foo p") in both jQuery 1.2.6 and 1.3.2. > > >>>>>>> the test HTML consists of 100 <p>s in a "foo" <div> and 900 <p>s in a > >>>>>>> "bar" <div>. > > >>>>>>> However the factor differs dramatically: > >>>>>>> In 1.2.6 the speedup from $("p", $("#foo")) to $("#foo p") was between > >>>>>>> 1.5x (FF) and 2x (IE), > >>>>>>> while for 1.3.2 the speedup is 20x (FF) and 15x (IE). > > >>>>>>> $("p", $("#foo")) is faster in 1.3.2, by a factor of 1.5 (both FF and > >>>>>>> IE), > >>>>>>> while $("#foo p") is _slower_ in 1.3.2 by 8.5x (FF) and 4.6x (IE). > > >>>>>>> Even with an empty "bar" div $("p", $("#foo")) is faster by a factor > >>>>>>> up > >>>>>>> to > >>>>>>> 3x. > > >>>>>>> Conclusion: > >>>>>>> If you have an ID selector, first get the element by it's ID and use > >>>>>>> it as scope for further selects. > > >>>>>>> by(e) > >>>>>>> Stephan > >>>>>>> 2009/2/23 ricardobeat <ricardob...@gmail.com>: > > >>>>>>>> up to jQuery 1.2.6 that's how the selector engine worked (from the > >>>>>>>> top > >>>>>>>> down/left to right). The approach used in Sizzle (bottom up/right to > >>>>>>>> left) has both benefits and downsides - it can be much faster on > >>>>>>>> large > >>>>>>>> DOMs and some situations, but slower on short queries. I'm sure > >>>>>>>> someone can explain that in better detail. > > >>>>>>>> Anyway, in modern browsers most of the work is being delegated to the > >>>>>>>> native querySelectorAll function, as so selector performance will > >>>>>>>> become more of a browser makers' concern. > > >>>>>>>> - ricardo > > >>>>>>>> On Feb 23, 1:08 pm, Peter Bengtsson <pete...@gmail.com> wrote: > > >>>>>>>>> I watched the John Resig presentation too and learned that CSS > >>>>>>>>> selectors always work from right to left. > >>>>>>>>> That would mean that doing this:: > > >>>>>>>>> $('#foo p') > > >>>>>>>>> Would extract all <p> tags and from that list subselect those who > >>>>>>>>> belong to #foo. Suppose you have 1000 <p> tags of them only 100 are > >>>>>>>>> inside #foo you'll have wasted 900 loops. > > >>>>>>>>> Surely $('#foo') is the fastest lookup possible. Doing it this way > >>>>>>>>> will effectively limit the scope of the $('p') search and you will > >>>>>>>>> never be bothered about any <p> tags outside #foo. > > >>>>>>>>> Or am I talking rubbish?