是否可以删除而不是将click事件添加到特定元素?即
我有一个$("#elem").click(function{//some behaviour});,$(".elem").click(function{//some behaviour});(有超过1个元素)而我的其他函数getJson正在执行我想从中删除click事件#elem,并从getJson函数再次添加它,但是一直保留mouseenter和mouseleave事件?
或者也许创建叠加以防止在模态窗口中点击?这是更好的主意吗?
编辑:
我已经看到了一些非常好的答案,但有一个细节我没有故意省略.有多个元素,我在className上调用click函数而不是我在原始问题中所说的elementId
而不是使用unbind(),这意味着您以后必须重新绑定相同的事件处理程序,您可以使用jQuery的data()工具与ajaxStart和ajaxStop事件使您的元素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的主要卖点,它表明.
| 归档时间: |
|
| 查看次数: |
3850 次 |
| 最近记录: |