
在网页开发中,我们经常需要根据元素的特定属性、内容或在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>
我们的目标是:
我们将探讨两种主要的jQuery实现方法。
jQuery强大的选择器组合能力使得我们能够以声明式的方式快速定位目标元素。这种方法通常更简洁,且对于简单的条件判断效率较高。
$(function() {
// 当DOM加载完成后执行
$("li:gt(2) span:not(:contains('0'))").parent().toggleClass("hidden shown");
});为了实现显示/隐藏的切换,我们定义两个CSS类:
.hidden {
display: none;
}
.shown {
display: block;
}<!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()方法结合JavaScript的条件判断会更加灵活和强大。
$(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样式与方法一相同:
.hidden {
display: none;
}
.shown {
display: block;
}<!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>这种方法在处理数值比较(如大于、小于、等于某个特定数字)时更为精确,因为它将文本内容明确转换为数字进行比较。
虽然不推荐直接在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文件即可。
本教程展示了如何使用jQuery根据元素的文本内容和在DOM结构中的位置来筛选并动态显示/隐藏元素。无论是通过强大的jQuery选择器组合实现声明式筛选,还是通过.each()方法结合JavaScript逻辑进行精细控制,jQuery都提供了灵活高效的解决方案。选择哪种方法取决于你的具体需求和代码的复杂性,但始终推荐采用结合CSS类的最佳实践,以提高代码的可维护性和扩展性。
以上就是jQuery实战:根据文本内容和DOM位置筛选并显示元素的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号