jQuery - 不解绑事件

时间:2015-03-04 08:34:32

标签: jquery bind

这是一个奇怪的。我有一个插件,我将所有可用的事件名称存储在一个数组中,所以当我销毁实例时,我取消绑定所有绑定的事件。我只选了一个事件名称作为例子。

this.destroy = function( callback ){
    //jqElm.off('hood.changed.customiser');
    events.forEach(function(eventName){
        //console.log('hood.changed.customiser|' + eventName + '|');
        jqElm.off(eventName);
    });
};

以上根本行不通。如果我删除第一个注释掉的直接取消绑定,它确实适用于该事件!

如果我取消注释第二个,我会得到以下列表:

  

hood.changed.customiser | loading.customiser |   hood.changed.customiser | loaded.customiser |   hood.changed.customiser | inserted.customiser |   hood.changed.customiser | hood.changed.customiser |   hood.changed.customiser | hoodPrimaryFabric.changed.customiser |   hood.changed.customiser | hoodSecondaryFabric.changed.customiser |   hood.changed.customiser | collar.changed.customiser |   hood.changed.customiser | ears.changed.customiser |   hood.changed.customiser | earPrimaryFabric.changed.customiser |   hood.changed.customiser | earSecondaryFabric.changed.customiser |   hood.changed.customiser | tusks.changed.customiser |   hood.changed.customiser | tusksPrimaryFabric.changed.customiser |   hood.changed.customiser | antlers.changed.customiser |   hood.changed.customiser | antlersPrimaryFabric.changed.customiser |   hood.changed.customiser | tail.changed.customiser |

你可以看到列表中的第3个是有问题的事件名称,但它并没有解除绑定!

任何人都可以为此发光吗?此致

1 个答案:

答案 0 :(得分:1)

我不知道它为什么不起作用,但是看着你的日志我可以看到你的所有事件都有名称空间customiser,所以只需用它来取消注册事件而不是数组

所以

this.destroy = function (callback) {
    jqElm.off('.customiser');
};