Селектор JQuery Descendant выделяет все элементы на странице? - PullRequest
1 голос
/ 25 октября 2011

Код и контрольный пример на jsbin

По сути, $("#div-pmdialog span"), кажется, выбирает все SPAN на странице, тогда как я понимаю, что он должен найти только те SPAN, которые являются потомками $("#div-pmdialog"). Что я делаю не так?

Ответы [ 4 ]

2 голосов
/ 25 октября 2011

Ваш 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 голосов
/ 25 октября 2011

Ваш jQuery действителен. Ваш HTML не.

Вот, проверьте это: http://jsbin.com/iqazus/6/edit

Все элементы div и span должны иметь закрывающие теги.

0 голосов
/ 25 октября 2011

Проблема вызвана тем, что вы используете короткие теги для элементов <span> и <div>.Здесь работает: http://jsbin.com/iqazus/9/edit#preview

0 голосов
/ 25 октября 2011

hrmmmm попробуйте "span # div-pmdialog"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...