如何在jQuery中覆盖点击事件

4
我正在使用JavaScript和JQuery,jquery.js中有关于click事件的参考资料。
在这里,我正在尝试覆盖click事件,但并没有成功。 即使已经被覆盖,它仍然执行旧的而不是新的。 是否有任何按优先级加载事件的方法?

这可能会有所帮助:https://dev59.com/E3I_5IYBdhLWcg3wMf5_ - Anoop Joshi P
"我正在尝试覆盖点击事件。"..."有没有办法按优先级加载事件?"这些陈述是相互矛盾的。不清楚您是想覆盖先前的处理程序,还是根据优先级以某种顺序调用处理程序。 - T J
我不知道这与jQuery UI和JavaScript对象有什么关系。 - T J
4个回答

14

如果我理解正确,这对你有效:

$('.xxx').off('click').on('click', function(e) {
    e.preventDefault();
}

谢谢Oscar的回答。你能告诉我上面的函数会做什么吗? - Naresh Reddy Kallamadi
使用“e.preventDefault()”可以个性化点击事件,现在您可以按照自己的需求应用它,取消默认使用并在其中编写您的函数。 - Oscar LT
感谢您的所有答案,我将取消或关闭选择器上的单击功能,但这些选择器是使用数据切换的选项卡。因此,当我们取消或关闭单击功能时,数据切换是否能够正常工作?也就是说,当我点击选项卡(使用数据切换)时,应该如预期地工作,但是对于该标记的选择器,单击事件应该被解除绑定。 - Naresh Reddy Kallamadi

5
您需要做的是先调用“unbind”方法,然后调用“bind”方法来编写新的Jquery点击事件,并确保所有Jquery插件已正确加载。下面是一个示例:
$("#button").unbind("click").bind("click", function(){
        alert("this is Overridden click event!");
    });

感谢您的回答,我将解除或关闭选择器上的点击功能,但这些选择器是使用数据切换的选项卡。因此,当我们解除或关闭点击功能时,数据切换是否会按预期工作?也就是说,当我点击选项卡(使用数据切换)时,它应该按预期工作,但是单击事件应该对该标签的选择器解除绑定。 - Naresh Reddy Kallamadi

1
也许您需要“解绑”作为内联属性定义的点击事件。在这种情况下,您可以使用$.removeAttr()方法。
$(SELECTOR).removeAttr('onclick');

这是唯一有效的方案,如果添加了内联 onclick <button onclick="foo()"... - Sajjan Sarkar

0

.click() 每次调用都会添加一个新的处理程序,而不是覆盖现有的处理程序。执行顺序将按绑定的顺序进行。

您可以使用 $(id).unbind() 清除该元素上的处理程序,然后再添加新的处理程序。


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