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? >>>>>> >>>>>> >