我有一个包含一些行的表,我使用jQuery将点击事件应用于TR
$("tr").click(function(e)
{
console.log($(this).data("rowid"));
});
工作正常。其中一个TD,我有一个实际的链接,当我点击链接时,我仍然得到console.log打印出来。如果我点击链接,有没有办法退出点击功能?
答案 0 :(得分:3)
致电event.stopPropagation();
$('td a').click(function(event) {
event.stopPropagation();
});
当您点击<tr>
内的链接时,这会阻止父<td>
元素的点击事件触发。
以下是一个有效的例子:http://jsfiddle.net/ALUZy/
答案 1 :(得分:2)
您应该添加不应用方法的类类型
答案 2 :(得分:2)
跳过任何锚:
$("tr").click(function(e)
{
if (e.target.tagname.toLowerCase() == 'a')
return; // Do nothing.
console.log($(this).data("rowid"));
});
答案 3 :(得分:0)
我会更改您的逻辑以检测列单击,并在检查单击的列后,在该行上执行console.log。
$('td').click(function(){
if ($(this).not('a')){
console.log($(this).closest('tr').data("rowid"));
}
});
答案 4 :(得分:0)
你可以这样做:
$("tr").each(function(t){
if($("a", this).length == 0){
$(this).click(function(e) {
console.log($(this).data("rowid"));
}
}
});
仅将该click函数应用于不包含锚点的表行。如果您仍希望将其应用于该行,则使用<a>
的td除外,请改用$("td").each(...)
和$(this).parent().data("rowid"))