我点击了哪个TD? jQuery的

时间:2011-09-01 19:36:10

标签: jquery

我有一个包含一些行的表,我使用jQuery将点击事件应用于TR

$("tr").click(function(e)
{
    console.log($(this).data("rowid"));
});

工作正常。其中一个TD,我有一个实际的链接,当我点击链接时,我仍然得到console.log打印出来。如果我点击链接,有没有办法退出点击功能?

5 个答案:

答案 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"))