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