查找元素是否包含x但不包含y(jQuery)

时间:2010-01-28 12:36:23

标签: jquery text find match contain

<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>

我想找到(和addClass)不包含文本的<p>标记,直接在其自身或其子项中。

2 个答案:

答案 0 :(得分:4)

这很好用,我确实要从你的一个段落中清空文本进行测试:

var $eles = $('p').filter(function() {
    return $(this).text().length == 0;
});
$eles.addClass("foo");

答案 1 :(得分:0)

我想您在问题描述中有错误,因为a标记始终包含示例中的文本。

据我所知,没有标准选择器允许检查是否有直接内容,但你可以试试这个:

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

如果您只想检查内部段落,则应该有效。