是否可以删除而不是向特定元素添加回点击事件? IE

我有一个 $("#elem").click(function{//some behaviour});$(".elem").click(function{//some behaviour}); (有超过 1 个元素),而我的其他函数 getJson 正在执行我想从 #elem 中删除 click 事件,并在 getJson 函数中再次添加它,但同时保留 mouseenter 和 mouseleave 事件整个时间?

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

编辑:

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

最佳答案

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

$(".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 的主要卖点,它显示了。

10-07 14:29
查看更多