#jquery #jquery-selectors
#jquery #jquery-селекторы
Вопрос:
Код и тестовый пример в jsbin
По сути, $("#div-pmdialog span")
кажется, что он выбирает все области на странице, тогда как, насколько я понимаю, он должен находить только те области, которые являются потомками $("#div-pmdialog")
. Что я делаю не так?
Ответ №1:
Ваш HTML не анализируется так, как вы ожидаете. Инспектор DOM сообщает, что он анализируется как:
<div id="div-pmdialog">
<p><span>hello</span></p><div id="div-pmdialog-text"><p></p>
</div>
<div id="div-indypcs-error"><span style="background-color:green">hello</span></div>
</div>
HTML — это не XML. В HTML4 и более ранних версиях самозакрывающиеся теги были недоступны, в основном потому, что браузеры просто игнорировали косую черту. Я полагаю, что HTML5 указывает, что некоторые теги могут быть «самозакрывающимися», но только те, которые никогда не могут иметь никакого содержимого, например <img>
, или <br>
.
Ответ №2:
Ваш jQuery действителен. Ваш HTML-код — нет.
Вот, проверьте это: http://jsbin.com/iqazus/6/edit
Все div
span
элементы и должны иметь закрывающие теги.
Ответ №3:
Проблема вызвана использованием вами коротких тегов в элементах <span>
and <div>
. Это работает здесь: http://jsbin.com/iqazus/9/edit#preview
Ответ №4:
хрмммм попробуйте «span#div-pmdialog»