我有一个表,我希望根据顶部的复选框动态隐藏/显示行。
我想在没有jQuery的情况下执行此操作,只需使用vanilla Javascript。
我在这个网站和其他网站上看到了很多方法,但总是代码片段,而不是完整的工作示例。
我不想给每一行一个单独的div名称,或者其他什么,我假设有一种方法可以用我想要隐藏/显示的3种行的公共类来完成。
任何人都可以向我展示一个工作示例,它允许复选框隐藏/显示带有vanilla Javascript的表中的多行吗?
答案 0 :(得分:1)
给出如下HTML:
<table>
<thead>
<tr>
<td>
<label>
<input type="checkbox" class="show" value="north" checked />North</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="checkbox" class="show" value="south" checked />South
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="checkbox" class="show" value="outOfArea" checked />Out of area
</label>
</td>
</tr>
</thead>
<tbody>
<tr class="north">
<td>North One</td>
</tr>
<tr class="north">
<td>North Two</td>
</tr>
<tr class="outOfArea">
<td>Out-of-area One</td>
</tr>
<tr class="south">
<td>South One</td>
</tr>
<tr class="south">
<td>South Two</td>
</tr>
<tr class="north">
<td>North Three</td>
</tr>
<tr class="north">
<td>North Four</td>
</tr>
<tr class="south">
<td>South Three</td>
</tr>
<tr class="outOfArea">
<td>Out-of-area Two</td>
</tr>
</tbody>
</table>
以下jQuery似乎可以用似乎来描述:
$('thead input[type=checkbox]').change(function(){
var self = this;
$(self).closest('table').find('tbody tr').filter('.' + self.value).toggle(self.checked);
});
由于您似乎更喜欢简单的JavaScript方法,我建议如下(使用与上面发布的相同的HTML):
function toggle (e) {
var self = e.target,
toggleClass = '.' + self.value,
toToggle = document.querySelectorAll(toggleClass);
for (var i = 0, len = toToggle.length; i < len; i++) {
toToggle[i].style.display = self.checked ? 'table-row' : 'none';
}
}
var thead = document.querySelector('thead');
thead.addEventListener('change', toggle);
参考文献:
答案 1 :(得分:0)
看起来你正在描述this example
的内容