Попытка использовать селектор содержит внутри вложенных div - PullRequest
2 голосов
/ 31 марта 2010
<div>
    <div>test</div>
</div>

$("div:contains('test')").css('display','none');

Я знаю, что собираюсь надрать себе на это. Проблема в том, что при запуске все элементы div скрыты из-за вложенности. Как мне сделать так, чтобы родительский div не скрывался? Я ограничен использованием 1.2.6

Ответы [ 2 ]

3 голосов
/ 31 марта 2010
$("div:contains('test'):not(:has(div))").hide();
1 голос
/ 31 марта 2010

Если вы хотите элегантное решение, определите новый селектор. К сожалению, :empty недостаточно, поскольку что-либо с дочерними элементами текстового узла не пусто.

$.extend($.expr[':'], {
  leaf: function(elem, i, match) {
    return $(elem).children().length == 0;
  }
});

И тогда вы можете сделать:

$("div:leaf:contains('test')").hide();
...