模块模式:绑定/解除绑定原型方法到$(窗口)

时间:2013-12-10 15:22:55

标签: javascript jquery

使用模块模式编写插件(称为test)(查询样板; https://github.com/jquery-boilerplate/jquery-boilerplate/blob/master/src/jquery.boilerplate.js。)。

请看这个小提琴:http://jsfiddle.net/3hgTz/


我们有两个div。对于每个div

    {li> x()$(window)滚动。上被触发 单击destroy()时会触发
  1. div。这解除了scroll方法的绑定。

  2. 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' );
      }
    
    }
    

    问题: destroy()方法从所有实例中取消绑定x(),而仅针对已点击的特定实例

    我是否错误地使用jQuery.proxy()?如何正确绑定和取消绑定plugin.prototype与/ $(window)之间的方法?

0 个答案:

没有答案