[英]jQuery - toggle button show/hide table data
请给我一些帮助。
<h2>Operating systems <span class="button small toggle-btn">Toggle</span></h2>
<table class="data" cellpadding="8" border="1">
<thead>
<tr>
<th class="first" style="width:120px">
Operating System </th>
<th class="">
Percentage </th>
</tr>
</thead>
<tbody>
<tr>
<td class="">iOS 8.4</td>
<td class="">
<div class="ui-percentage" style="width:17%">17 %</div>
</td>
</tr>
<tr class="tr even">
<td class="">iOS 8.3</td>
<td class="">
<div class="ui-percentage" style="width:6%">6 %</div>
</td>
</tr>
<tr>
<td class="">iOS 8.2</td>
<td class="">
<div class="ui-percentage" style="width:11%">11 %</div>
</td>
</tr>
<tr class="tr even">
<td class="">iOS 8.1.3</td>
<td class="">
<div class="ui-percentage" style="width:11%">11 %</div>
</td>
</tr>
<tr>
<td class="">iOS 8.1</td>
<td class="">
<div class="ui-percentage" style="width:6%">6 %</div>
</td>
</tr>
</tbody>
</table>
当页面第一次加载时,我希望表格被折叠。 当我单击“切换”按钮时,我想更改表格状态,因此基本上可以将其展开,如果再次单击该按钮,则再次折叠它。
这是我的剧本
<script>
$(document).ready(function() {
$('.toggle-btn').closest('table').hide(); // I want to target the table right after the button
$('.toggle-btn').on('click', function(event) {
$(this).closest('table').toggle();
});
});
</script>
如何使这项工作正确?
为什么不直接使用切换功能?
$(document).ready(function() {
$('table').hide();
$('.toggle-btn').on('click', function() {
$('table').toggle();
});
});
如果你只有一张 table
那么
$(document).ready(function() {
$('tbody').closest('h2').next().find("tbody").hide();
$('.toggle-btn').on('click', function() {
$('tbody').toggle();
});
});
对于一个以上的同级表
您可以找到最接近的h2
, next()
为您提供table
$(document).ready(function() { $('.toggle-btn').closest('h2').next().find("tbody").hide(); $('.toggle-btn').on('click', function() { $(this).closest('h2').next().find("tbody").toggle(); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <h2>Operating systems <span class="button small toggle-btn">Toggle</span></h2> <table class="data" cellpadding="8" border="1"> <thead> <tr> <th class="first" style="width:120px"> Operating System </th> <th class=""> Percentage </th> </tr> </thead> <tbody> <tr> <td class="">iOS 8.4</td> <td class=""> <div class="ui-percentage" style="width:17%">17 %</div> </td> </tr> <tr class="tr even"> <td class="">iOS 8.3</td> <td class=""> <div class="ui-percentage" style="width:6%">6 %</div> </td> </tr> <tr> <td class="">iOS 8.2</td> <td class=""> <div class="ui-percentage" style="width:11%">11 %</div> </td> </tr> <tr class="tr even"> <td class="">iOS 8.1.3</td> <td class=""> <div class="ui-percentage" style="width:11%">11 %</div> </td> </tr> <tr> <td class="">iOS 8.1</td> <td class=""> <div class="ui-percentage" style="width:6%">6 %</div> </td> </tr> </tbody> </table>
$(document).ready(function() {
$('.toggle-btn').parent().next('table').hide(); // I want to target the table right after the button
$('.toggle-btn').on('click', function(event) {
$(this).parent().siblings('table').toggle();
});
});
选择器应为$('.toggle-btn').parent().next('table')
函数closest()
沿元素的父元素向上移动,因此它将永远找不到表。 您将必须执行以下操作:
$(document).ready(function() {
$('.toggle-btn').parent().parent().find('table').hide(); // I want to target the table right after the button
$('.toggle-btn').on('click', function(event) {
$(this).parent().parent().find('table').toggle();
});
});
但是,如果有多个表,这将不起作用。 考虑使用id或表,以便您可以直接访问它。 例如:
<table id="data-table-1" class="data" cellpadding="8" border="1">
那会使javascript更加简单,即:
$('.toggle-btn').on('click', function(event) {
$('#data-table-1').toggle();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.