0

0

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

碧海醫心

碧海醫心

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

|

784人浏览过

|

来源于php中文网

原创

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

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

在网页开发中,我们经常需要根据元素的特定属性、内容或在dom结构中的位置来动态地显示或隐藏它们。本教程将聚焦于一个具体的场景:如何使用jquery选择从第三个<li>标签(索引为2)之后的<li>元素,并且这些<li>元素内部的<span>标签所包含的数字内容必须大于0,然后将这些匹配到的<li>元素的显示状态从隐藏切换为显示。

场景描述与挑战

假设我们有如下HTML结构,其中包含一系列<li>元素,每个<li>内部都有一个<span>标签,<span>中包含一个数字:

<ul>
  <li class="hidden"><span>1</span></li>
  <li class="hidden"><span>0</span></li>
  <li class="hidden"><span>1</span></li>
  <li class="hidden"><span>4</span></li>
  <li class="hidden"><span>1</span></li>
  <li class="hidden"><span>3</span></li>
  <li class="hidden"><span>1</span></li>
  <li class="hidden"><span>0</span></li>
</ul>

我们的目标是:

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

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

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

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

核心选择器解析

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

示例代码

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

对应的CSS样式

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

.hidden {
  display: none;
}

.shown {
  display: block;
}

完整HTML结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery选择器筛选示例</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <style>
        .hidden {
            display: none;
        }
        .shown {
            display: block;
        }
    </style>
</head>
<body>
    <h1>jQuery选择器筛选示例</h1>
    <ul>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>0</span></li>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>4</span></li>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>3</span></li>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>0</span></li>
    </ul>

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

运行上述代码,你会发现从第四个<li>开始,所有<span>内容不为“0”的<li>都将显示出来。

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

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

百度AI搜
百度AI搜

百度全新AI搜索引擎

下载

核心逻辑解析

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

示例代码

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

对应的CSS样式

CSS样式与方法一相同:

.hidden {
  display: none;
}

.shown {
  display: block;
}

完整HTML结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery .each()筛选示例</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <style>
        .hidden {
            display: none;
        }
        .shown {
            display: block;
        }
    </style>
</head>
<body>
    <h1>jQuery .each()筛选示例</h1>
    <ul>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>0</span></li>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>4</span></li>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>3</span></li>
      <li class="hidden"><span>1</span></li>
      <li class="hidden"><span>0</span></li>
    </ul>

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

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

直接修改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类的最佳实践,以提高代码的可维护性和扩展性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

156

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

406

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

515

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

312

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

129

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

51

2026.01.13

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

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

精品课程

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

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 43.4万人学习

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

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