OnClick on table row - 除了Anchor

时间:2014-07-01 15:40:54

标签: javascript jquery

我有一张桌子,其中有以下事件:

$("#tp-active-list-table td").click(function () {
    var transactionNbr = parseInt($(this).parent("tr").children('td.td-transaction-nbr').html());
    DoSomething(transactionNbr);
});

它工作正常,基本上它会调用从DoSomething收集的Number的{​​{1}}。

但是我确实遇到了问题,因为在其中一个td中我有一个锚点,如果在该锚点上执行了点击,那么td将会运行,页面将会正确导航到另一个URL。

有没有检查点击是否在DoSomething上,以避免运行anchor功能?

3 个答案:

答案 0 :(得分:6)

使用event.stopPropagation()来阻止事件冒泡。

$('td a').click(function (e) { 
    e.stopPropagation()
});

其他选项是:e.target.tagName

$("#tp-active-list-table td").click(function (e) {
    if(e.target.tagName.toLowerCase() === 'a'){
            var transactionNbr = parseInt($(this).parent("tr").children('td.td-transaction-nbr').html());
            DoSomething(transactionNbr);
    }
});

答案 1 :(得分:1)

作为第一个参数传递给处理函数的对象具有属性target,如果target.tagName == 'a',则单击一个锚。

答案 2 :(得分:0)

我认为Shaunak的回答非常有效。只是指出另一种方法,在点击事件中,您可以检查是否存在悬停的a标记。 http://jsfiddle.net/Zx7S5/

$("#tp-active-list-table td").click(function(event) {
    if($(this).find("a:hover").length <= 0) {

       /* ..... */

    }
});