Jquery删除并添加单击事件

Lon*_*don 4 javascript jquery

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

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

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

编辑:

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

Fré*_*idi 6

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

$(".elem").click(function() {
    if (!$(this).data("ajaxRequestPending")) {
        // some behaviour
    }
}).ajaxStart(function() {
    $(this).data("ajaxRequestPending", true);
}).ajaxStop(function() {
    $(this).removeData("ajaxRequestPending");
});
Run Code Online (Sandbox Code Playgroud)

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