自己写的插件,一个页面的几个元素都调用插件的同一个方法,会出现混乱。有什么解决方法?

解决方案 »

  1.   

    扩展jQuery插件的时候,除了function,其他的变量最好都用new/extend出来的拷贝,不然不同实例之间是共享变量的
      

  2.   

    自己写的插件最后有ID,在页面中调用的时候new出来时候可以通过不同ID进行操作,而且最好把这些ID放入一个栈中,实现内存的释放等操作,做到操作什么就用什么。
      

  3.   


    $.widget( "ui.demo", {
    options: {
    change: false
    },
    _foo: {
    bar: 'catch me if you can'
    },
    _create: function() {
    if (this.options.change) {
    this._foo.bar = 'disappeared';// 这个是各个实例共享的
    }
    var self = this;
    this.element.click(function() { alert(self._foo.bar); });
    },
    destroy: function() {
    $.Widget.prototype.destroy.apply( this, arguments );
    },
    _setOption: function( key, value ) {
    $.Widget.prototype._setOption.apply( this, arguments );
    }
    });
    $('#a1').demo({change: true});// alert('disappeared');
    $('#a2').demo({change: false});// alert('disappeared');