微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – onclick和jquery事件绑定导致痛苦

我有一个具有onclick属性链接,并且有一个toggle事件我绑定到链接(我知道我在这里通过混合这两个来犯罪,但我无能为力.)

现在到了这个背景,我有两个场景:
1.用户点击链接 – 事件的执行顺序是: – 先点击,然后通过jQuery绑定切换事件
2.通过jQuery触发click事件 – 此处的执行顺序不同,绑定事件首先触发然后触发onclick.

由于这两种情况和订单的翻转,有些事情发生了可怕的错误.我需要在onclick之前先运行绑定事件.有没有更好的方法来执行此操作,而不是删除init上的onclick属性并通过.data()将它们保存到链接,然后通过切换事件处理?

我需要照顾的另一件事(生活很复杂),链接可以通过查询字符串切换.即如果用户通过另一个链接从另一个页面进入,则会有一个带有链接ID的查询字符串参数,该参数由另一个执行上述方案2的javascript函数读取.

因此,如果要删除onclick,则必须在init上完成.

我能做些什么来解开这个烂摊子?

解决方法:

删除.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='

演示:http://jsfiddle.net/3MKWR/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐