筛选元素,仅选择带有文本的元素

荞麦
<div id="page-content">
  <ul>
   <li>Text</li>
   <li>Text 2 </li>
  </ul
  <div class="heading">
    <h2>Heading</h2>
  </div>
</div>

我以上面的HTML代码为例。我想过滤每个元素,只向带有文本的元素添加一个类。我在下面有一些jQuery:

$(document).ready(function(){
  $('#page-content').find('*').each(function(){
    if ($(this).text().trim().length){
      $(this).addClass('yay');
    }
  });
});

该代码在page-content元素中找到每个项目,并检查它是否包含文本,并添加类“ yay”。确实可以,但是如果子元素中包含文本,它将为父元素提供类。例如。<ul>因为<li>有文本,所以它将给该类

我使用的代码有什么问题吗?还是我需要使用完全不同的脚本仅将类应用于具有文本的元素?

注意HTML是生成的,因此我可能会以<ol>代替,而不是#page-content中包含<ul><a>标记。

赫克托·巴尔博萨(Hector Barbossa)

您可以修改代码以检查元素是否有任何子代,并且仅在这是文本节点时才添加类。但是,如果HTML格式不正确,则可能会导致问题。

$(document).ready(function() {
      $('#page-content').find('*').each(function() {
          if ($(this).children().length == 0 && $(this).text().trim().length) {
              $(this).addClass('yay');
          }
      });
  });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

赛普拉斯(Cypress)-仅声明一个带有文本的元素

木偶:单击带有文本的元素

选择带有类的元素之前的所有元素?

夜间值班。单击带有文本的元素

通过带有“:”(冒号)的属性选择元素

XPath选择仅包含文本的元素

在带有文本的两个子元素之间检索文本

元素带有标记的文本内容。爪哇

如何选择仅具有特定类别的元素?

XPath选择带有类通配符的元素?

获取所有选择元素选项的文本?

仅选择没有子元素的元素,除了子元素是<wbr> </ wbr>

选择带有句点的元素

使用带有命名空间的XPath选择3个元素,但按属性过滤(仅Firefox)

SimpleXML框架:带有元素或文本的元素

jQuery,选择带有类的所有元素

HMENU仅包装带有子元素的元素

选择没有文本同级的内联元素

关于仅选择具有子元素的问题

从Java列表中仅选择具有特定属性的元素

包含带有重音符号或字符的文本的 XPath 元素选择

仅当元素包含具有某些指定文本的元素时,如何按类删除元素?

在 selenium python 中仅选择带有标题标签的 web 元素

在带有文本的元素周围添加边框

如何使用带有 JavaScript 的 XPATH 选择与元素内部文本的一部分匹配的元素

R 仅查找带有数字和“,”的元素

选择文本内嵌元素

带有循环的网页抓取仅返回单个元素

无法单击()带有 selenium 的 onclick 元素(尝试过的文本链接、部分文本链接、xpath、css 选择器)