将样式应用于表,但当前列中的单元格除外

时间:2012-03-08 21:49:20

标签: jquery

我需要能够将样式应用于表格中的所有单元格,但当前列中的单元格除外。

我正在尝试做这样的事情,但它似乎不起作用。我错过了什么?

    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>

2 个答案:

答案 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");