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