0

我有两个问题:)

  1. 我使用 Jquery 在第一列中选​​择表格行和复选框,我怎样才能使 2 和 7 列不可点击。我的意思是,如果您单击 7 列的单元格,它将不会选择复选框,也不会添加“选定”类。

    $('#tableID tbody tr')
        .filter(':has(:checkbox:checked)')
        .addClass('selected')
        .end()
        .click(function (event) {
            $(this).toggleClass('selected');
            if (event.target.type !== 'checkbox') {
                $(':checkbox', this).attr('checked', function () {
                    return !this.checked;
                });
            }
        });
    
  2. 我正在使用 JavaScript 添加所有一列值,当表格没有合并单元格时,脚本工作正常。如何使它与合并的单元格一起工作。

_________                             _________
|_|_|_|_|                             |   |_|_|
|_|_|_|_|    script working           |___|_|_|     script doesn't work
|_|_|_|_|                             |_|_|_|_|
|_|_|_|_|                             |___|_|_|
function count() {

    var i;
    var sum=0;
    var table = document.getElementById("tableID");
    for (i=1;i<table.rows.length-1;i++) {
        sum += Number(table.rows[i].cells[3].innerHTML, 10);
    }
    document.getElementById('sum1').innerHTML = sum;
}

第二部分的HTML代码:http: //jsfiddle.net/f4zH9/

谢谢

4

1 回答 1

1

对于第一部分,我找到了解决问题的不同方法:

$('#tableID tbody tr').each(function() {
    $('td', $(this)).click(function() {
        var index = $(this).index();
        if(index != 1 && index != 6) {
             $(this).parent().toggleClass('selected');
            if (event.target.type !== 'checkbox') {
                $(':checkbox', $(this).parent()).attr('checked', function () {
                    return !this.checked;
                });
            }
        }
    });
});​

这会将 click 事件绑定到每个单元格,并且当用户单击并检查单元格的索引时,有效地检查您正在单击的列。如果索引是 1 或 6(第 2 或第 7 列),则它什么也不做。这是一个 jsfiddle 来展示它:http: //jsfiddle.net/cchana/vCVwv/2/

对于您问题的第二部分,您的 for 循环存在问题,而不是:

for (i=1;i<table.rows.length-1;i++)

不要忘记 JavaScript 从 0 开始计数,你应该有

for (i=0;i<table.rows.length;i++)

创建了一个 jsfiddle 来展示它:http: //jsfiddle.net/cchana/WRtZP/

于 2012-05-18T14:48:14.070 回答