jQuery off()实现不起作用

Chr*_*ier 0 jquery events event-handling

我在这做错了什么?我阅读了文档,但我似乎无法弄清楚为什么这不按预期工作.

    $(".img-edit-button").on("click", function () {
       if(self.elementMenuOpen === false){
           self.showImageMenu();
           self.elementMenuOpen = true;
       }else{
           self.hideImageMenu();
           self.elementMenuOpen = false;
       }
});
Run Code Online (Sandbox Code Playgroud)

然后,我用 off()

$(".img-edit-button").off();
Run Code Online (Sandbox Code Playgroud)

但即使在使用.off()了我缺少的东西之后事件似乎也在翻倍?

Jus*_*ell 6

这直接来自http://api.jquery.com/off/ "off()方法删除了附加.on()"的事件处理程序.因此,如果在调用off后绑定click事件,它们将继续执行.我猜你是多次重新绑定到click事件.

一种解决方案是将事件绑定到父节点,只需一次,因此每次从dom添加/删除有问题的元素时都不必重新绑定.我知道这可能有一些性能问题,但让你的父类尽可能深入dom将有助于此.

$(".someparentclass").on('click','.img-edit-button',function(){});
Run Code Online (Sandbox Code Playgroud)

或者,如果要重新绑定,可以使用以下命令:

$(".img-edit-button").off().on(function(){}); 
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/SEndX/3/