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

javascript – Jquery删除并添加单击事件

是否可以删除而不是将click事件添加到特定元素?即

我有一个$(“#elem”).click(function {// some behavior});,$(“.elem”).click(function {// some behavior});(有多个元素)我的其他函数getJson正在执行我想从#elem中删除click事件,并从getJson函数再次添加它,但是整个时间都保留了mouseenter和mouseleave事件?

或者也许创建叠加以防止在模态窗口中点击?这是更好的主意吗?

编辑:

我已经看到了一些非常好的答案,但有一个细节我没有故意省略.有多个元素,我调用className上的click函数而不是我在原始问题中所说的elementId上

解决方法:

而不是使用unbind(),这意味着您将不得不在以后重新绑定相同的事件处理程序,您可以使用jQuery的data()工具与ajaxStartajaxStop事件使您的元素在所有AJAX请求期间忽略单击事件:

$(".elem").click(function() {
    if (!$(this).data("ajaxRequestPending")) {
        // some behavIoUr
    }
}).ajaxStart(function() {
    $(this).data("ajaxRequestPending", true);
}).ajaxStop(function() {
    $(this).removeData("ajaxRequestPending");
});

编辑:这个答案也是id-to-class-proof(参见提问者的编辑),因为匹配选择器的所有内容都将以正确的方式处理AJAX事件.这是jQuery的主要卖点,它表明.

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

相关推荐