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

添加一个OnClick处理程序与jQuery只有一次 – 即使再次调用

如果我将一个处理程序分配给元素的OnClick事件两次,那么处理程序将被执行两次。但是我想改变这一点,即使我分配了两次,处理程序只会执行一次。

说明问题的荒谬例子:

$('.button').click(
    function(){
       alert('here');
});
$('.button').click(
    function(){
       alert('here');
});

所以我添加了两次处理程序。现在当我点击一个元素与该类,我会得到两个警报框。

问题是,我如何限制它,所以我只会得到一个警报框?

解决方法

如果.one()实际上是你之后(除了事件处理程序被触发一次之后),那么我认为这是正确的答案。如果没有,您可以在绑定之前取消绑定事件:
var myEventHandler = function () {alert('hello')};
$('a').unbind('click',myEventHandler);
$('a').bind('click',myEventHandler);

应该工作

编辑:由于这个回复不断得到投票,我将添加一个(在大多数情况下更好)的解决方案,至少在OP的情况下会起作用。当处理动态添加内容时,只需在父元素上使用jQuery的on(),而不是直接在元素上应用事件处理程序。

http://api.jquery.com/on/

原文地址:https://www.jb51.cc/jquery/182502.html

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

相关推荐