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?

Reply via email to