我的文档正文中有一个点击事件:
$("body").on('click.findElem', function(e) {
e.stopPropagation();
e.preventDefault();
self.hinter(e.target);
return false;
});
它基本上捕获了被点击的目标并对其做了一些事情。但是,有些目标已经有一个点击事件,它们阻止我的点击被执行。我该如何克服这个问题?我尝试解除绑定,但点击甚至根本无法实际执行取消绑定。
答案 0 :(得分:1)
e.stopImmediatePropagation()
完成这项工作,但前提是你的处理程序在存在任何其他处理程序之前执行。
不幸的是,没有办法在第一个位置插入你自己的处理程序 - 但如果其他处理程序也使用jQuery绑定,你可以使用这个讨厌的hack:How do you force your javascript event to run first, regardless of the order in which the events were added?
如果您真的需要这个,您可能希望使用本机DOM API以捕获模式绑定事件处理程序:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
在泡泡处理程序(由jQuery和大多数其他脚本使用)之前触发捕获处理程序,这样您就有可能首先执行处理程序。
答案 1 :(得分:0)
试试这个并查看demo
$( "body" ).on( "click", ".clickme:not(.clicked)", function( event ) {
$(this).addClass('clicked');
alert('here');
});
答案 2 :(得分:0)
我倾向于不使用并坚持使用bind / unbind组合。 我有一些页面重新加载部分内容,然后必须重新绑定事件。 我小心翼翼地做这样的事情
$(".theobjectsiwant").unbind("click").bind("click", function() {
alert('hi there');
});
如果你想/必须坚持使用on()函数,你不应该将on()与unbind()混合使用,并尝试使用.off("click").on("click")
点击此处查看示例http://api.jquery.com/off/