Найти, содержит ли элемент x, но не y (jQuery) - PullRequest
2 голосов
/ 28 января 2010
<div>
  <p><a href="#">link</a> some text</p>
  <p><a href="#">link</a></p>
  <p><a href="#">link</a> some text</p>
  <p><a href="#">link</a></p>
</div>

Я хочу найти (и добавить к классу) теги <p>, которые НЕ содержат текст, непосредственно внутри себя или его дочерних элементов.

Ответы [ 2 ]

4 голосов
/ 28 января 2010

Это отлично работает, мне нужно было очистить текст из одного из ваших абзацев, чтобы проверить:

var $eles = $('p').filter(function() {
    return $(this).text().length == 0;
});
$eles.addClass("foo");
0 голосов
/ 28 января 2010

Я полагаю, у вас есть ошибка в описании проблемы, так как тег всегда содержит текст в примере.

Насколько я знаю, нет стандартного селектора, позволяющего проверить наличие прямого контента, но вы можете попробовать это:

$('p').each(function(){
 var p = $(this).clone();
 p.children().remove();
 if(p.text().length){
   $(this).addClass('gotcha');
  }
});

Должно работать, если вы хотите проверить только абзацы внутри.

...