选择除2列

时间:2016-03-29 10:35:10

标签: jquery

这是我用来检查放在行的第一列中的复选框的代码段。

$('[id*=GridView1] tr:not(:first)').each(function (index) {

    // Selection of entire row
    $(this).on('click', function (e) {

        // Check status of checkbox
        if ($(this).find("input:checkbox").attr('checked')) {
            $(this).find("input:checkbox").attr('checked', false);
        }
        else
            $(this).find('input:checkbox').attr("checked", true);
    });
});

但我想避免对gridview的特定列进行点击操作,例如(最后一列和第三列)。我无法选择"这个"元件。你能举个例子吗?请。 提前谢谢

3 个答案:

答案 0 :(得分:0)

您可以通过这种方式检查回调中列的索引:

$('[id*=GridView1] tr:not(:first)').each(function (index) {
    $(this).on('click', function (e) {
         var index = $(event.target).closest("td").index();
         // you may now test if index is 3 or the last one

另一种方法是不绑定行而是绑定到单元格

$('[id*=GridView1] tr:not(:first) td').each(function (index) {
    var $cell = $(this);
    $cell.on('click', function (e) {
         var $row = $cell.closest("tr");

请注意,如果您有大表,则可能更喜欢使用委托来减少绑定数。

答案 1 :(得分:0)

$('[id*=GridView1] tr:not(:first)').each(function (index) {
    var row = $(this);
    var checkbox = row.find("input:checkbox");

    row.children('td:not(:last-child)').each(function(ndx) { //skip last cell
        if(ndx == 2) return true; //skip third cell

        $(this).on('click', function (e) {

            // Check status of checkbox
            if (checkbox.attr('checked')) {
                checkbox.attr('checked', false);
            }
            else
                checkbox.attr("checked", true);
        });
    });
});

答案 2 :(得分:0)

我找到了解决方案,但这不起作用,因为我必须通过添加“parent()”在if-else中应用进一步的修正。 所以我用这种方式解决了:

        $('[id*=GridView1] tr:not(:first)').each(function (index) {

        // Seleziono gli elementi che non mi interessano
        //var $exclude = $(this).find("select");
        // Seleziono tutta l'area della riga tranne l'ultima colonna
        $(this).find('td:not(:nth-last-child(2))').on('click', function (e) {
            // Controllo lo stato del checkbox
            if ($(this).parent().find("input:checkbox").attr('checked')) {
                $(this).parent().find("input:checkbox").attr('checked', false);
            }
            else
                $(this).parent().find('input:checkbox').attr("checked", true);
        });
    });