Подтвердить что ты не робот

Селектор jQuery в строке работает только в окружении div

Почему это работает?

$('#findme', '<div><div id="findme">Hello</div></div>')

И это не так?

$('#findme', '<div id="findme">Hello</div>')

По какой-то причине только тогда, когда у меня есть вложенный div, jQuery найдет div с идентификатором findme.

Даже включение его в другой тег не работает.

$('#findme', '<html><div id="findme">Hello</div></html>')

Кроме того, следующее не работает.

$('<div id="findme">Hello</div>').find('#findme')
$('<html><div id="findme">Hello</div></html>').find('#findme')

Хотя это работает.

$('<div><div id="findme">Hello</div></div>').find('#findme')

Есть что-то, что я не понимаю о том, как работает контекст.

Спасибо, Randall

4b9b3361

Ответ 1

На самом деле это довольно просто. То, как вы ищете, - это использование контекста. Поэтому он принимает самый верхний node в строке и ищет через него дочерние элементы.

Итак, представьте себе ту же структуру в html и проанализируйте ее:

$('#findme', '<div><div id="findme"></div></div>')

совпадает с

$('div').find('#findme')

ИЛИ

$('div').children('#findme')

Итак, когда вы пытаетесь

$('<div id="findme"></div>').find('#findme')

У него явно нет детей.