Такие вещи обычно зависят от браузера, но я бы использовал третий.
Первый, браузеры с querySelectorAll
будут использовать его, поэтому производительность должна быть хорошей.
В браузерах, которые не поддерживают qsa
, я думаю, что Sizzle находит все p
элементов на странице и обходит своих предков, чтобы увидеть, есть ли элемент #a
.
$('#a p')
Я бы вообще не использовал второй, потому что он заменяется на третий в фоновом режиме.
$('p', $a_div) // becomes $a_div.find('p')
Через querySelectorAll
илиgetElementsByTagName
, вы начинаете с известной точки в DOM и ищете только внутри нее, поэтому я готов поспорить, что это, как правило, будет самым быстрым.
$a_div.find('p')