我的JS看起来像这样
$(document).ready(function(){
menuClickHandler();
});
我有基于ajax的菜单,menuClickHandler
用于使其工作并驻留在单独的JS文件中。 menuClickHandler
关联与菜单项关联的其他函数。在单击菜单项时,它调用与菜单项关联的功能。假设我有菜单项Jump
和与之关联的函数JumpHandler
。在JumpHandler
内,有一个简单的函数如下
functionA() {
$("div.tree").on("click", ".branch", function(event) {
event.stopPropagation();
//some code
});
}
方案:
当第一次加载页面时,一切都很好,当我点击Jump
functionA' gets called and everything works fine. Now if click some other menu item and then click on
再次调用Jump again,
JumpHandler is called again and hence
functionA`时,会导致分支上的点击事件被绑定两次。任何人都可以告诉我如何删除/取消删除委派的点击事件,以便只有点击事件绑定到分支。
jQuery版本:v2.1.1
答案 0 :(得分:2)
将处理程序附加到元素的事件。每个事件类型的每个元素最多执行一次处理程序。
代码的
extension UIView {
var isViewEmpty : Bool {
return self.subviews.count == 0 ;
}
}
答案 1 :(得分:1)
如果由于某种原因您必须在functionA
内绑定点击事件,那么您可以尝试off
functionA() {
$("div.tree").off("click", ".branch" );
$("div.tree").on("click", ".branch", function(event) {
event.stopPropagation();
//some code
});
}
或者您可以在functionA
之外执行此绑定,因为它会将事件处理程序附加到将来的分支元素,无论您何时调用functionA
如果你想确保只触发一次事件,那么
functionA() {
$("div.tree").on("click", ".branch", function(event) {
event.stopPropagation();
//some code
$("div.tree").off("click", ".branch" );
});
}
答案 2 :(得分:0)
因为一旦调用了函数,你就在jquery中初始化了一个函数,该函数将在不再调用函数的情况下执行。所以在调用任何函数之前只需关闭jquery函数
示例:
$("div.tree").off("click", ".branch" );
functionA();
$("div.tree").off("click", ".branch" );
functionB();