禁用表中的行单击

时间:2012-08-29 19:32:24

标签: javascript jquery html-table onclick

我想根据列中设置的标志值禁用行的行单击 其余行应该是可点击的,也可以在某些列之间

前两行是真的应该是不可点击的。但是,其他行应该可以从第1-5列中单击。

以下是link

4 个答案:

答案 0 :(得分:3)

提取行中最后一个单元格的.text()并测试它:

$('#table tr').find('td:gt(0):lt(5)').on("click", function() {
    if ($(this).closest('tr').find('td:eq(5)').text() != "true") {
        alert("hello");
    }
})​;

http://jsfiddle.net/mblase75/mEbUG/2/

或者,在调用.filter之前,您可以.on("click")出不需要的单元格:

$('#table tr').find('td:gt(0):lt(5)').filter(function() {
    return ($(this).closest('tr').find('td:eq(5)').text() != "true");
}).on('click', function() {
    alert("hello");
});​

http://jsfiddle.net/mblase75/mEbUG/12/

答案 1 :(得分:2)

如果我理解正确的话。您只想要没有“真”单元格的行可点击吗?或者您希望每个单元格都可以单击,而不是具有“true”的单元格?

这是一个示例,只有在没有单词“true”的单元格中才能使行可单击:

var hasTrueCell = function(cells) {

    for (var x = 0; x < cells.length; x++) {

        if (cells[x].innerHTML == "true")
            return true;

    }        

    return false;

}

var table = document.getElementById("table");
var rows = table.getElementsByTagName("TR");

for (var x = 0; x < rows.length; x++) {

    if (!hasTrueCell(rows[x].childNodes))
        rows[x].onclick = function() {         

            alert("hello");    

        }        

}

答案 2 :(得分:1)

已编辑(评论后)

现在,这应该可行。

$('#table tr').filter(function() {
    return $(this).find('td:contains("true")').length === 0;
}).click(function() {
    alert("hello");
});​​  

Demo

Reference

答案 3 :(得分:0)

$('#table tr').find('td:gt(0):lt(5)').click(function(){if($(this).text()!="true")alert(1)})​