【问题标题】:Find if the element contains x but not y (jQuery)查找元素是否包含 x 但不包含 y (jQuery)
【发布时间】:2011-01-10 09:37:51
【问题描述】:
<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>

我想直接在其自身或其子项内部查找(并添加类)不包含文本的&lt;p&gt; 标记。

【问题讨论】:

  • 您描述的选择器不会选择上述任何段落,对吗?
  • 它将只选择带有链接的那些,而不是那些包含“某些文本”的那些
  • 但是子项包含文本,而您明确表示“不包含文本的标签,直接在其自身或其子项内部。”

标签: jquery text find match contain


【解决方案1】:

我想你在问题描述中有一个错误,因为 a 标签总是包含示例中的文本。

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

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

如果您只想检查段落内部,应该可以工作。

【讨论】:

    【解决方案2】:

    这很好用,我确实必须从你的一个段落中清空文本来测试:

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

    【讨论】:

      猜你喜欢
      • 2018-09-06
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多