0

0

jQuery实战:根据文本内容和DOM位置筛选并显示元素

碧海醫心

碧海醫心

发布时间:2025-09-23 14:13:00

|

784人浏览过

|

来源于php中文网

原创

jQuery实战:根据文本内容和DOM位置筛选并显示元素

本文详细介绍了如何利用jQuery筛选并操作HTML中的特定
  • 元素。通过结合使用:gt、:not、:contains等选择器,或通过.each()方法进行迭代和条件判断,可以精确地定位从第三个
  • 标签开始,且其内部标签文本内容大于0的
  • 元素,并动态切换其显示状态,从而实现页面元素的精细化控制。

    在网页开发中,我们经常需要根据元素的特定属性、内容或在dom结构中的位置来动态地显示或隐藏它们。本教程将聚焦于一个具体的场景:如何使用jquery选择从第三个

  • 标签(索引为2)之后的
  • 元素,并且这些
  • 元素内部的标签所包含的数字内容必须大于0,然后将这些匹配到的
  • 元素的显示状态从隐藏切换为显示。

    场景描述与挑战

    假设我们有如下HTML结构,其中包含一系列

  • 元素,每个
  • 内部都有一个标签,中包含一个数字:

    我们的目标是:

    1. 选择从第四个
    2. 元素开始(即索引大于2的
    3. 元素,因为索引从0开始)。
    4. 在这些选定的
    5. 中,进一步筛选其内部标签的文本内容大于0
    6. 将这些最终匹配到的
    7. 元素的显示状态从hidden(display: none;)切换为shown(display: block;)。

    我们将探讨两种主要的jQuery实现方法。

    方法一:利用jQuery选择器进行高效筛选

    jQuery强大的选择器组合能力使得我们能够以声明式的方式快速定位目标元素。这种方法通常更简洁,且对于简单的条件判断效率较高。

    核心选择器解析

    • li:gt(2):这个选择器会匹配所有索引大于2的
    • 元素。在零索引的DOM集合中,这意味着从第四个
    • 元素开始。
    • span:not(:contains('0')):这个选择器用于匹配那些不包含文本“0”的元素。需要注意的是,:contains()是基于文本内容进行匹配的,所以span:not(:contains('0'))会排除掉那些明确包含“0”的,但不区分“0”是数字还是字符串的一部分(例如,它也会排除“10”)。
    • .parent():在找到符合条件的后,我们需要向上遍历到其父元素
    • ,以便对
    • 进行操作。

    示例代码

    $(function() {
      // 当DOM加载完成后执行
      $("li:gt(2) span:not(:contains('0'))").parent().toggleClass("hidden shown");
    });

    对应的CSS样式

    为了实现显示/隐藏的切换,我们定义两个CSS类:

    .hidden {
      display: none;
    }
    
    .shown {
      display: block;
    }

    完整HTML结构

    
    
    
        
        
        jQuery选择器筛选示例
        
        
    
    
        

    jQuery选择器筛选示例

    运行上述代码,你会发现从第四个

  • 开始,所有内容不为“0”的
  • 都将显示出来。

    方法二:使用.each()迭代与逻辑判断

    当筛选条件变得更加复杂,或者需要进行数值比较等更精细的逻辑处理时,.each()方法结合JavaScript的条件判断会更加灵活和强大。

    Nimo.space
    Nimo.space

    智能画布式AI工作台

    下载

    核心逻辑解析

    1. 初步筛选:首先使用li:gt(2)选择从第四个
    2. 开始的所有
    3. 元素。
    4. 遍历与判断:对这些初步筛选出的
    5. 元素使用.each()方法进行遍历。在每次迭代中:
      • 获取当前
      • 内部的文本内容。
      • 使用trim()去除可能的空白字符。
      • 使用parseInt()将文本内容转换为整数。
      • 进行数值比较:如果转换后的数字大于0,则执行切换显示状态的操作。

    示例代码

    $(function() {
      // 当DOM加载完成后执行
      $("li:gt(2)").each(function(i, el) {
        // 获取当前
  • 内部的文本内容 var cnt = $(el).text().trim(); // 将文本转换为整数并判断是否大于0 if (parseInt(cnt) > 0) { // 如果大于0,则切换其父元素
  • 的类 $(el).toggleClass("hidden shown"); } }); });
  • 对应的CSS样式

    CSS样式与方法一相同:

    .hidden {
      display: none;
    }
    
    .shown {
      display: block;
    }

    完整HTML结构

    
    
    
        
        
        jQuery .each()筛选示例
        
        
    
    
        

    jQuery .each()筛选示例

    这种方法在处理数值比较(如大于、小于、等于某个特定数字)时更为精确,因为它将文本内容明确转换为数字进行比较。

    直接修改CSS属性的替代方案

    虽然不推荐直接在JavaScript中操作元素的style属性,因为它增加了样式与行为的耦合度,但在某些特定场景下,你也可以选择使用.css()方法直接修改样式:

    // 使用方法一的选择器,直接修改CSS
    $("li:gt(2) span:not(:contains('0'))").parent().css("display", "block");
    
    // 或者结合方法二的逻辑
    // $("li:gt(2)").each(function(i, el) {
    //   var cnt = $(el).text().trim();
    //   if (parseInt(cnt) > 0) {
    //     $(el).css("display", "block");
    //   }
    // });

    这种方式的缺点是:如果后续需要改变显示方式(例如从block改为flex),你需要修改JavaScript代码。而使用CSS类,你只需要修改CSS文件即可。

    最佳实践与注意事项

    1. 使用CSS类管理样式:强烈推荐使用.toggleClass()结合CSS类来管理元素的显示/隐藏状态。这有助于保持代码的整洁性、可维护性,并遵循结构(HTML)、样式(CSS)、行为(JavaScript)分离的原则。
    2. 理解jQuery选择器:熟悉:gt(), :not(), :contains()等选择器及其组合方式,能让你更高效地定位元素。
    3. 文本处理与类型转换
      • .text():用于获取元素的纯文本内容。
      • .trim():去除字符串两端的空白字符,这在进行数值转换前尤其重要。
      • parseInt():将字符串解析为整数。在进行数值比较时,确保将文本内容正确转换为数字类型。
    4. DOM操作性能:虽然jQuery在优化DOM操作方面做了很多工作,但频繁或大量的DOM操作仍可能影响页面性能。在可能的情况下,尽量一次性选择所有目标元素,然后进行操作,而不是在循环中反复查询DOM。
    5. 语义化HTML:构建清晰、语义化的HTML结构有助于编写更简洁、更易懂的jQuery代码。

    总结

    本教程展示了如何使用jQuery根据元素的文本内容和在DOM结构中的位置来筛选并动态显示/隐藏元素。无论是通过强大的jQuery选择器组合实现声明式筛选,还是通过.each()方法结合JavaScript逻辑进行精细控制,jQuery都提供了灵活高效的解决方案。选择哪种方法取决于你的具体需求和代码的复杂性,但始终推荐采用结合CSS类的最佳实践,以提高代码的可维护性和扩展性。

  • 相关专题

    更多
    js获取数组长度的方法
    js获取数组长度的方法

    在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

    556

    2023.06.20

    js刷新当前页面
    js刷新当前页面

    js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

    374

    2023.07.04

    js四舍五入
    js四舍五入

    js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

    733

    2023.07.04

    js删除节点的方法
    js删除节点的方法

    js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

    477

    2023.09.01

    JavaScript转义字符
    JavaScript转义字符

    JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

    414

    2023.09.04

    js生成随机数的方法
    js生成随机数的方法

    js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

    1011

    2023.09.04

    如何启用JavaScript
    如何启用JavaScript

    JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

    658

    2023.09.12

    Js中Symbol类详解
    Js中Symbol类详解

    javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

    553

    2023.09.20

    PS使用蒙版相关教程
    PS使用蒙版相关教程

    本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

    23

    2026.01.19

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.8万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 2.9万人学习

    CSS教程
    CSS教程

    共754课时 | 21万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号