我需要能够将样式应用于表格中的所有单元格,但当前列中的单元格除外。
我正在尝试做这样的事情,但它似乎不起作用。我错过了什么?
var col = $(this).parent().children().index($(this));
$("#myTable td:nth-child(:not(col-1))").addClass("myClass");
<table id="myTable">
<tr>
<td>col 1</td>
<td>col 2</td>
</tr>
<tr>
<td><span class="click">click</span></td>
<td><span class="click">click</span></td>
</tr>
</table>
答案 0 :(得分:1)
//bind click event handler to the `.click` elements
$('#myTable').find('.click').on('click', function () {
//remove class from all TDs
$('#myTable').find('td').removeClass('myClass');
//get the index of the clicked element based on its parents siblings
var index = $(this).closest('td').index();
//iterate though each TD element in the table and add the class to it if it isn't the same index as the clicked element
$.each($('#myTable').find('tr').children(), function () {
if ($(this).index() != index) {
$(this).addClass('myClass');
}
});
});
以下是演示:http://jsfiddle.net/hU5qW/1/
这将从所有TD元素中删除自定义类,然后将其添加到单击SPAN的列中的自定义类。请注意,如果您在元素上调用.index()
,您将根据其兄弟元素获取该元素的索引。
答案 1 :(得分:0)
由于col
是变量,因此必须使用字符串连接。您还需要先放置:not
。
var col = $(this).parent().children().index($(this))-1; $("#myTable td:not(:nth-child("+col+"))").addClass("myClass");