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

发布于 2024-08-19 10:53:05 字数 368 浏览 11 评论 0原文

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

我想找到(并将Class 添加到)不包含文本的

标签,直接在其自身或其子代内部。

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

I want to find (and addClass to) the <p> tags that DO NOT contain text, directly inside itself or its children.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

得不到的就毁灭 2024-08-26 10:53:05

这工作正常,我确实必须清空你的段落之一中的文本来测试:

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

This works fine, I did have to empty the text out of one of your paragraphs to test:

var $eles = $('p').filter(function() {
    return $(this).text().length == 0;
});
$eles.addClass("foo");
一梦等七年七年为一梦 2024-08-26 10:53:05

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

据我所知,没有标准选择器允许检查是否有直接内容,但您可以尝试以下操作:

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

如果您只想检查里面的段落,应该可以工作。

I suppose You have an error in the problem description, as the a tag always contains text in the example.

As far as I know there is no standard selector allowing to check if there is a direct content, but You could try this:

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

Should work if You wish to check only the paragraph insides.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文