onclick和jQuery事件绑定引起的问题

4
我有一个链接,它具有一个 onclick 属性,并且我将一个切换事件绑定到该链接(我知道我在犯一个错误,但是我无能为力。)
现在对于这个背景,我有两种情况:
1. 用户点击链接 - 事件执行顺序是:先执行 onclick,然后执行通过 jQuery 绑定的切换事件。 2. 通过 jQuery 触发 click 事件 - 这里的执行顺序不同,绑定的事件会先触发,然后才是 onclick
由于这两种情况以及顺序的翻转,一些严重的问题出现了。我需要在 onclick 之前运行绑定的事件。有没有更好的方法来做到这一点,而不是在初始化时删除 onclick 属性,并通过 .data() 将其保存到链接中,然后通过切换事件进行处理?
还有一件事情需要注意(生活很复杂),链接可以通过查询字符串进行切换。也就是说,如果用户通过另一个链接从另一个页面进入,将会有一个带有链接 ID 的查询字符串参数,该参数将被另一个 JavaScript 函数读取,该函数执行上述第二种情况。
因此,如果要删除 onclick,必须在初始化时完成。
我该如何解决这个混乱的问题?

1
发布一些你的代码,以便更好地了解你在做什么... - ankur
1个回答

5

如果你在绑定所有应该在之前触发的方法之后,移除 .onclick 函数并重新绑定它,有什么问题吗?

HTML

<div id="foo" onclick="inline();">click me</div>

Javascript

function inline() {
    alert('I was bound through onclick=');
}

$(function() {
    var $foo = $('#foo'),
        stored = $foo[0].onclick;

    $foo[0].onclick = null;

    $foo.bind('click', function() {
        alert('I was bound via jQuery');
    });
    $foo.bind('click', stored);
});

在这段代码之后,警报的顺序将是:

'I was bound via jQuery'
'I was bound through onclick='

Demo: http://jsfiddle.net/3MKWR/


是的,这给了我一些想法来解决我的问题。谢谢! - var x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接