防止点击元素上的点击事件?

时间:2013-10-31 09:48:25

标签: javascript jquery

我的文档正文中有一个点击事件:

$("body").on('click.findElem', function(e) {                 
            e.stopPropagation();  
            e.preventDefault();    
            self.hinter(e.target);            
            return false;
        });

它基本上捕获了被点击的目标并对其做了一些事情。但是,有些目标已经有一个点击事件,它们阻止我的点击被执行。我该如何克服这个问题?我尝试解除绑定,但点击甚至根本无法实际执行取消绑定。

3 个答案:

答案 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/