JQuery-禁用单个可单击列

JQuery-禁用单个可单击列,jquery,Jquery,我有一个包含隐藏行的表,单击该表行时可以显示隐藏行。这非常有效,但是其中一列(第4列)包含一个链接,单击该链接时,我想执行其他操作,而不显示隐藏的行。 如何使第4列除链接外不可单击? 我做了一把小提琴 在最后一列中添加一个不可点击的类,并检查目标元素是否有不可点击的或我的按钮类。如果有,则使用返回false像 if ($(e.target).hasClass('myButton') || $(e.target).hasClass('non-clickable')) { return fal

我有一个包含隐藏行的表,单击该表行时可以显示隐藏行。这非常有效,但是其中一列(第4列)包含一个链接,单击该链接时,我想执行其他操作,而不显示隐藏的行。 如何使
第4列
除链接外不可单击? 我做了一把小提琴


在最后一列中添加一个
不可点击的
类,并检查目标元素是否有
不可点击的
我的按钮
类。如果有,则使用
返回false

if ($(e.target).hasClass('myButton') || $(e.target).hasClass('non-clickable')) {
   return false;
}
片段,

$(函数(){
变量$table=$('.table');
$table.find('.hidden行').hide();
$table.find('.accordion')。单击(函数(e){
if($(e.target).hasClass('myButton')| |$(e.target).hasClass('non-clickable')){
返回false;
}
$table.find('.accordion').not(this).nextAll('.hidden row:first').fadeOut(500);
$(this).nextAll('.hidden row:first').slideToggle(“slow”);
});
});

第1栏
第2栏
第3栏
第4栏
数据
数据
数据
这里隐藏了更多的数据

您可以使用检查当前单击的目标是否是单击的
tr
行中的第四个
td

就像
!(e.target=$(this.find)(“td:nth child(4)”)[0])

检查以下代码段:

$(文档).ready(函数(){
$(函数(){
变量$table=$('.table');
$table.find('.hidden行').hide();
$table.find('.accordion')。单击(函数(e){
if(!(e.target==$(this.find)(“td:nth child(4)”)[0]){
$table.find('.accordion').not(this).nextAll('.hidden row:first').fadeOut(500);
$(this).nextAll('.hidden row:first').slideToggle(“slow”);
}
});
});
});

第1栏
第2栏
第3栏
第4栏
数据
数据
数据
这里隐藏了更多的数据

虽然其他答案很好地回答了“禁用列单击可单击行”的具体问题,但实际要求是在单击链接时不要“单击”行

一个链接,单击该链接时,我希望执行其他操作,而不显示隐藏行

您可以在链接级别(而不是列级别)使用简单的:

return false;
return false
from jquery events calls event.stopPropagation,它阻止单击处理程序(通过td)向tr“冒泡”。这也停止了链接的默认操作(在本例中导航到
href='#'


对于此问题,请添加以下代码:

$table.find(".accordion a").click(function(e) {
    // do something here
    $(this).text($(this).text() == "Play" ? "Pause" : "Play")
    // stop the row getting a click event
    e.stopPropagation();
    // also stop the row getting the click event (so don't need the above, it's for completeness)
    return false;
})

更新的fiddle:

这非常好,直到你移动了列/添加了另一列,所有内容都结束了。相反,在该列的
td
s中添加一个类,并检查该类(否则原则是正确的)。如问题中所述,更改为第四个culmun,这很好,直到您移动该列/在其之前添加另一列。。。等:)这是伟大的,做我想要的。如果行中有两个id相同或不同的元素可单击,如何使它们都工作。代码似乎只允许一个元素工作…希望我很清楚。基本上,我现在有两个按钮,我想在可点击的行上工作。谢谢。只需从每个按钮/链接按钮的事件处理程序返回false即可。谢谢。恐怕我不知道该怎么做。是否有线索?事件处理程序=“onclick”函数,例如
$(“#mybutton”)。单击(函数(){…执行任务…;返回false;})目前你是如何让你的按钮/链接“做”任何事情的?无论在何处,都要添加一个返回false
return false;
$table.find(".accordion a").click(function(e) {
    // do something here
    $(this).text($(this).text() == "Play" ? "Pause" : "Play")
    // stop the row getting a click event
    e.stopPropagation();
    // also stop the row getting the click event (so don't need the above, it's for completeness)
    return false;
})