我有一个具有onclick
属性的链接,并且有一个切换事件我绑定到链接(我知道我在这里通过混合这两个来犯罪,但我没有什么可以做到这一点。)
现在到了这个背景,我有两个场景:
1. 用户点击链接 - 事件的执行顺序为: - onclick
首先,然后通过jQuery绑定的切换事件
2. 通过jQuery 触发click
事件 - 此处的执行顺序不同,绑定事件先触发onclick
。
由于这两种情况和订单的翻转,出现了可怕的错误。我需要在onclick
之前首先运行绑定事件。有没有比在init上删除onclick
属性并通过.data()
将其保存到链接然后通过切换事件处理更好的方法?
我需要照顾的另一件事(生活很复杂),链接可以通过查询字符串切换。即如果用户通过另一个链接从另一个页面进入,则会有一个带有链接ID的查询字符串参数,该参数由另一个执行上述方案2的javascript函数读取。
因此,如果要删除onclick,则必须在init上完成。
我能做些什么来解决这个烂摊子?
答案 0 :(得分: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='