我有一张分成几个人的桌子。每个tbody中的第一行都有一个按钮,用于隐藏此tbody中除了包含按钮的行之外的所有其他行。
不确定如何实现这一点。
我的HTML:
<table>
<tbody>
<tr>
<td><button class="hide_button_main"> x </button></td>
<td>Label</td>
</tr>
<tr>
<td>Zone 1</td>
<td></td>
</tr>
<tr>
<td>Zone 2</td>
<td></td>
</tr>
<tr>
<td>Zone 3</td>
<td></td>
</tr>
<tr>
<td>Zone 4</td>
<td></td>
</tr>
</tbody>
区域1到4的行将被隐藏但不包含带有标签的行
我的Jquery:
$('.hide_button_main').click(function(e) {
// var rows = $(this).closest('tbody').find('tr').length;
var rows = $(this).closest('tbody');
rows.each(function() {
alert('1');
});
});
答案 0 :(得分:1)
你可以用这个
$('.hide_button_main').click(function(e){
$(this).closest('tbody').hide();
});
或者如果你想隐藏tbody,孩子会这样做
$('.hide_button_main').click(function(e){
$(this).closest('tbody').find('tr').hide();
});
答案 1 :(得分:0)
这应该有效:
$('.hide_button_main').click(function(e){
$(this).closest('tr').siblings().hide(); // hide all except self
});
答案 2 :(得分:0)
我认为应该这样做
$('table').on('click', '.hide_button_main', function(e) {
var target = $(e.currentTarget);
var row = target.closest('tr');
console.log('console', target, row, row.siblings())
row.siblings().hide();
});
演示:Fiddle
这里我们使用jQuery.on委托事件注册模型。如果我们有很多要附加事件处理程序的元素,建议使用它。
答案 3 :(得分:0)
他想要隐藏所有兄弟姐妹的行,所以:
$('.hide_button_main').click(function (e) {
var $currentRow = $(this).closest('tr');
var $otherRows = $currentRow.siblings();
$otherRows.hide();
});
DEMO:http://jsfiddle.net/NeXMh/1/
修改强>
使用多个表时,请使用单个事件处理程序:
$('table').on(click, '.hide_button_main', (function (e) {
var $currentRow = $(this).closest('tr');
var $otherRows = $currentRow.siblings();
$otherRows.hide();
});
答案 4 :(得分:0)
隐藏第一个...
以外的所有行 $('.hide_button_main').click(function(e){
$(this).closest('tbody').find('tr:not(:first)').hide();
});