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