Javascript 模块模式:将原型方法绑定/解除绑定到$(窗口)
我正在使用模块模式查询样板文件编写一个名为test的插件 请看这把小提琴: 我们有两个div。对于每个部门: x在$window scroll上启动。 单击div时触发destroy。这将解除scroll方法的绑定。 问题:destroy方法将x从所有实例中解除绑定,而不仅仅是针对单击的特定实例Javascript 模块模式:将原型方法绑定/解除绑定到$(窗口),javascript,jquery,Javascript,Jquery,我正在使用模块模式查询样板文件编写一个名为test的插件 请看这把小提琴: 我们有两个div。对于每个部门: x在$window scroll上启动。 单击div时触发destroy。这将解除scroll方法的绑定。 问题:destroy方法将x从所有实例中解除绑定,而不仅仅是针对单击的特定实例 我是否错误地使用了jQuery.proxy?如何正确地将plugin.prototype中的方法绑定到$window或从$window中解除绑定?$。代理每次使用时都会生成一个新函数。将其与.off一起
我是否错误地使用了jQuery.proxy?如何正确地将plugin.prototype中的方法绑定到$window或从$window中解除绑定?$。代理每次使用时都会生成一个新函数。将其与.off一起使用将无法按预期工作,因为.off需要原始函数,而不是相同的函数。如果要将处理程序绑定到所有元素,则无法将此处理程序仅删除到匹配集中的一个特定元素。可能是一个解决办法:
Plugin.prototype = {
bind: function() {
this.element.addClass( 'active' );
$( window ).on( 'scroll.' + pluginName, $.proxy( this.x, this ) );
this.element.on( 'click.' + pluginName, $.proxy( this.destroy, this ) );
},
destroy: function() {
this.element.removeClass( 'active' );
$( window ).off( 'scroll.' + pluginName, $.proxy( this.x, this ) );
// unbinds scroll for all instances!
},
x: function() {
console.log( 'x' );
}
}