
在前端开发中,我们经常需要根据元素的文本内容或其他属性来动态地显示或隐藏它们。本教程将以一个具体场景为例:如何选择从第三个<li>元素开始的所有<li>,如果其内部的<span>标签包含的数字大于0,则切换该<li>的显示状态。
假设我们有以下HTML结构,其中每个<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>初始状态下,所有<li>都通过CSS类.hidden设置为display: none;。我们的目标是,从第四个<li>(索引为3)开始,筛选出那些<span>内容大于0的<li>,并将其显示出来。
jQuery提供了强大的选择器,可以高效地定位到符合特定条件的元素。这种方法简洁明了,适用于条件相对简单的情况。
首先,我们需要定义用于控制显示状态的CSS类:
.hidden {
display: none;
}
.shown {
display: block;
}然后,在页面加载完成后执行jQuery代码:
$(function() {
// 选择索引大于2(即从第4个元素开始)的<li>内部的<span>元素
// 并且该<span>的文本内容不包含'0'
// 然后获取这些<span>的父元素(即<li>),并切换其class
$("li:gt(2) span:not(:contains('0'))").parent().toggleClass("hidden shown");
});结合完整的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;
border: 1px solid blue; /* 仅为区分显示效果 */
margin-bottom: 5px;
padding: 5px;
}
</style>
</head>
<body>
<h2>通过jQuery选择器筛选</h2>
<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() {
// 从索引为3(即第四个)的<li>开始,选择其内部的<span>
// 并且该<span>的文本内容不包含'0'
// 然后获取这些<span>的父元素(即<li>),并切换其class
$("li:gt(2) span:not(:contains('0'))").parent().toggleClass("hidden shown");
});
</script>
</body>
</html>当筛选逻辑变得复杂,或者需要进行数值比较时,使用.each()方法遍历元素并结合JavaScript的条件判断会更加灵活和准确。
CSS类与方法一相同:
.hidden {
display: none;
}
.shown {
display: block;
}jQuery代码:
$(function() {
// 选择索引大于2(即从第4个元素开始)的所有<li>元素
$("li:gt(2)").each(function(i, el) {
// 获取当前<li>内部<span>的文本内容,并去除首尾空白
var spanText = $(el).text().trim();
// 将文本内容转换为整数进行比较
var numericValue = parseInt(spanText);
// 如果转换后的数字大于0,则切换当前<li>的class
if (numericValue > 0) {
$(el).toggleClass("hidden shown");
}
});
});结合完整的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;
border: 1px solid green; /* 仅为区分显示效果 */
margin-bottom: 5px;
padding: 5px;
}
</style>
</head>
<body>
<h2>通过jQuery .each() 方法筛选</h2>
<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() {
// 选择索引大于2(即从第4个元素开始)的所有<li>元素
$("li:gt(2)").each(function(i, el) {
// 获取当前<li>内部<span>的文本内容,并去除首尾空白
var spanText = $(el).text().trim();
// 将文本内容转换为整数进行比较
var numericValue = parseInt(spanText);
// 如果转换后的数字大于0,则切换当前<li>的class
if (numericValue > 0) {
$(el).toggleClass("hidden shown");
}
});
});
</script>
</body>
</html>本文介绍了两种使用jQuery根据子元素内容筛选并显示父元素的方法:
最佳实践建议:
选择哪种方法取决于具体的需求和复杂性。对于本教程中的场景,两种方法都能有效解决问题,但each()方法在处理数值条件时更为健壮和灵活。
以上就是jQuery实现条件筛选与元素显示切换教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号