【问题标题】:Disable row click in table [closed]禁用表中的行单击[关闭]
【发布时间】:2012-08-24 11:49:44
【问题描述】:

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

具有 true 的前两行应该是不可点击的。但是,其余的行应该可以从第 1-5 列单击。

这里是link

【问题讨论】:

  • 请同时在此处发布相关代码。
  • 在你的 jsfiddle 中我没有什么可以点击的。

标签: javascript jquery html-table onclick


【解决方案1】:

提取行中最后一个单元格的.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/

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

$('#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/

【讨论】:

  • 这就像一个魅力:) !!
  • 我在该列中有一张图片,而不是真/假。我正在使用 ui-icon ui-icon-close。我需要禁用这些行,如何检查它是否不是文本?请查看编辑链接jsfiddle.net/mEbUG/15
【解决方案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");    

        }        

}

【讨论】:

    【解决方案3】:

    已编辑(在 cmets 之后)

    现在,这应该可以了。

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

    Demo

    Reference

    【讨论】:

    • 如果字符串“true”出现在行中的任何其他位置,则此方法将失败 -- jsfiddle.net/mblase75/P3AVP/1
    • 如此真实。我必须选择td。已编辑
    • 现在它会过滤掉包含“true”的单元格,而不是整行。
    • 他希望当td 中的任何一个是true 时,整个tr 应该是不可点击的。对吧?
    • @Jashwant 是的,根据列中的值,整行应该是不可点击的
    【解决方案4】:
    $('#table tr').find('td:gt(0):lt(5)').click(function(){if($(this).text()!="true")alert(1)})​
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2010-09-06
      相关资源
      最近更新 更多