如果执行锚点href链接,则禁用onClick事件

时间:2014-02-11 11:00:24

标签: javascript html hyperlink

我有一张桌子。 每行都是指向某个页面的链接(例如google.com),该页面由js“ onClick window.open ”方法调用:

<tr  class='tr' onClick="win=window.open('http://google.com');win.focus();" >

在上一栏中,我有一个 anchor href 链接到其他页面(例如 - jsfiddle):

<td class='td'><a href = "http://jsfiddle.net">JSFiddle</a></td>

如果我点击锚链接它已打开,但也打开了onClick调用的第一页。

我发现了一个相反的问题:

How can I disable HREF if onclick is executed?

我们可以通过在onClick事件中添加“return false”来禁用href。

如果单击锚链接,是否可以阻止onClick执行?

以下是我的演示: Fiddle

2 个答案:

答案 0 :(得分:2)

我建议你稍微改变方法。内联事件处理程序永远不是一个好主意。考虑一下这段代码。

HTML:

<table id="table">
    <tr data-url="http://google.com">
        <td>Content</td>
        <td>Content</td>
        <td><a href="http://jsfiddle.net">JSFiddle</a></td>
    </tr>
    ...
</table>

JS:

var table = document.getElementById('table');

table.addEventListener('click', function(e) {

    var target = e.target;
    if (target.tagName == 'A') {
        return false;
    }

    if (target.tagName == 'TD') {
        var win = window.open(target.parentNode.getAttribute('data-url'));
        win.focus();
    }
}, false);

演示:http://jsfiddle.net/CqRE9/

答案 1 :(得分:1)

是的,这是可能的!

$("tr").on("click", function(){ 
 $(this).attr("onClick", false); 
});

演示:fiddle