Селектор 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
Ответы
Ответ 1
На самом деле это довольно просто. То, как вы ищете, - это использование контекста. Поэтому он принимает самый верхний node в строке и ищет через него дочерние элементы.
Итак, представьте себе ту же структуру в html и проанализируйте ее:
$('#findme', '<div><div id="findme"></div></div>')
совпадает с
$('div').find('#findme')
ИЛИ
$('div').children('#findme')
Итак, когда вы пытаетесь
$('<div id="findme"></div>').find('#findme')
У него явно нет детей.