Игнорировать дочерние элементы при выборе элементов в jQuery - PullRequest
1 голос
/ 02 октября 2009

вот мой HTML:

<div class="foo">
    <span class="ignore_this">IGNORE THIS TEXT</span>
    SELECT THIS
</div>

Я пытаюсь выяснить, как выделить все вещи внутри foo, но не вещи внутри ignore_this:

$("div.foo:not(span.ignore_this)").text()

но я не могу понять, как.

1 Ответ

4 голосов
/ 02 октября 2009

Селектор div.foo:not(span.ignore_this) говорит, что "соответствует каждому div.foo, который не является span.ignore_this", который будет выбирать только один элемент: div.foo. Если вы реструктурировали свой HTML следующим образом:

<div class="foo">
    <span class="ignore_this">IGNORE THIS TEXT</span>
    <span>SELECT THIS</span>
</div>

Тогда вы можете позвонить:

$('div.foo span:not(.ignore_this)').text();

Что соответствует всем span элементам, которые являются потомками div.foo, которые не .ignore_this.

Если у вас нет такой роскоши, как переформатировать html, вы можете выполнить то, что вы хотите, с помощью дополнительных циклов процессора:

var clone = $('div.foo').clone();
$('span.ignore_this', clone).remove();
var text = clone.text();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...