
在网页开发中,尤其是在展示大量数据时,为了避免页面过长或信息过载,通常需要对表格内容进行折叠。一个常见的需求是,默认只显示表格的前几行,然后提供一个按钮让用户选择“显示更多”或“显示更少”。
原始的实现方式,如通过 document.getElementById('ID').style.display = 'none' 逐个隐藏或显示行,存在以下显著问题:
为了克服这些局限性,我们需要一种更智能、更具动态性的解决方案。
优化的解决方案将利用jQuery库的强大功能,特别是其选择器和DOM操作方法。核心思想如下:
首先,确保您的项目中已经引入了jQuery库。如果尚未引入,可以在HTML文件的zuojiankuohaophpcnhead>或<body>标签结束前添加以下CDN链接:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
保持表格的PHP动态生成部分不变,主要修改按钮部分。将两个独立的“Show All”和“Show Less”按钮合并为一个,并添加一个通用的点击事件处理函数。
<table width="100%" cellspacing="10" cellpadding="10" class="tablec">
<thead>
<tr>
<th><strong>Floor Plan</strong></th>
<th><strong>Dimension</strong></th>
<th><strong>Price</strong></th>
</tr>
</thead>
<tbody>
<?php
// PHP 代码动态生成表格行,确保每行都有一个<tr>标签
// 示例:
$floor_plans = [
['fave_plan_title' => 'Plan A', 'fave_plan_image' => '#', 'fave_plan_description' => 'Description A', 'fave_plan_size' => '1000'],
['fave_plan_title' => 'Plan B', 'fave_plan_image' => '#', 'fave_plan_description' => 'Description B', 'fave_plan_size' => '1200'],
['fave_plan_title' => 'Plan C', 'fave_plan_image' => '#', 'fave_plan_description' => 'Description C', 'fave_plan_size' => '1500'],
['fave_plan_title' => 'Plan D', 'fave_plan_image' => '#', 'fave_plan_description' => 'Description D', 'fave_plan_size' => '1800'],
['fave_plan_title' => 'Plan E', 'fave_plan_image' => '#', 'fave_plan_description' => 'Description E', 'fave_plan_size' => '2000'],
['fave_plan_title' => 'Plan F', 'fave_plan_image' => '#', 'fave_plan_description' => 'Description F', 'fave_plan_size' => '2200'],
];
$i = 0;
foreach ($floor_plans as $plans) {
$i++;
?>
<tr id="<?php echo $i; ?>" class="<?php echo $i; ?>">
<td>
<a href="<?php echo esc_url($plans['fave_plan_image']); ?>" data-lightbox="roadtrip">
<img class="borderr" src="<?php echo esc_url($plans['fave_plan_image']); ?>" alt="<?php echo $plans['fave_plan_description']; ?>" width="100" height="100" title="<?php echo $plans['fave_plan_description']; ?>">
</a>
</td>
<td>
<?php
// 假设 RemoveSpecialChar 和 get_the_title() 函数已定义
$str = ltrim(chop($plans['fave_plan_description'], "Floor Plan"), "Property Title");
$str1 = RemoveSpecialChar($str); // 假设 RemoveSpecialChar 函数已定义
echo $str1;
?>
<br>
<b><?php echo esc_attr($plans['fave_plan_size']); ?> Sqft</b>
</td>
<td><button class="btn btn-primary">Get Quote</button></td>
</tr>
<?php } ?>
</tbody>
</table>
<br>
<div class="wrapperr">
<!-- 单个按钮,用于切换显示状态 -->
<button class="btn btn-primary" onclick="toggleTableRows(event)">
Show More <i class="fa fa-arrow-down" style="font-size:14px"></i>
</button>
</div>注意: PHP生成表格时,确保 <tbody> 内的 <tr> 标签是直接子元素,以便jQuery选择器能够正确匹配。
在HTML的<body>结束标签前,或者在<head>中(确保在DOM加载完成后执行),添加以下JavaScript代码。
<script>
// 确保DOM加载完成后执行
jQuery(document).ready(function($) {
var shown = false; // 跟踪当前状态:false表示只显示部分,true表示显示全部
var defaultVisibleRows = 3; // 默认显示的行数
// 页面加载时,默认隐藏超出指定数量的行
// 注意:jQuery的:gt()选择器是0-indexed,所以:gt(defaultVisibleRows - 1)表示从第 defaultVisibleRows 行(索引为 defaultVisibleRows-1)之后的所有行
$("table.tablec tbody tr:gt(" + (defaultVisibleRows - 1) + ")").hide();
// 更新按钮文本为“Show More”
$('.wrapperr button').html('Show More <i class="fa fa-arrow-down" style="font-size:14px"></i>');
window.toggleTableRows = function(e) {
if (shown) {
// 当前是“显示全部”状态,点击后应“显示更少”
$("table.tablec tbody tr:gt(" + (defaultVisibleRows - 1) + ")").hide();
$(e.target).html('Show More <i class="fa fa-arrow-down" style="font-size:14px"></i>');
} else {
// 当前是“显示部分”状态,点击后应“显示全部”
$("table.tablec tbody tr:gt(" + (defaultVisibleRows - 1) + ")").show();
$(e.target).html('Show Less <i class="fa fa-arrow-up" style="font-size:14px"></i>');
}
shown = !shown; // 切换状态
};
});
</script>代码解释:
.tablec tbody tr:nth-child(n+4) { /* 从第4个子元素开始隐藏 */
display: none;
}但请注意,如果使用CSS进行初始隐藏,JavaScript的 .show() 方法可能需要与 display: table-row 结合使用,以确保正确的显示行为,或者直接依赖jQuery的 hide()/show() 方法来管理 display 属性。本教程中的jQuery方法已经包含了初始隐藏。
通过采用jQuery的选择器(如:gt())和状态管理机制,我们成功地将动态表格行的显示/隐藏功能集成到一个简洁、高效的单个按钮中。这种方法不仅解决了传统手动DOM操作带来的维护性和可伸缩性问题,还大大提升了代码的清晰度和用户体验。这是一种在Web开发中处理动态内容显示和交互的推荐实践。
以上就是动态表格行显示/隐藏切换教程:使用单个按钮优化用户体验的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号