解决方案 »

  1.   


    ​function cls(){
        this.mid = Math.random();
        this.obj = document.createElement('div');
        this.obj.setAttribute('id', this.mrid);
        var that=this;
        $(this.obj).xxx.dialog({
            xxxEvent : function(){
                $('#'+that.mid).xxx.hide();
            }
        });
    }
      

  2.   

    每个 function 内的this 都不太一样。要确保用一个的话最好就是 var that = this 楼上的做法,那就安全啦 
      

  3.   

    1楼的方法是对的。
    我觉得你也可以查查这个插件的“XXXEvent”回调中有没有参数,一般类似插件都会在回调函数中将调用该插件的jquery对象(即上面的$(this.obj))作为默认参数的。
      

  4.   

    第一种方式
    ​function cls(){
        this.mid = Math.random();
        this.obj = document.createElement('div');
        this.obj.setAttribute('id', this.mrid);
        var me=this;
        $(this.obj).xxx.dialog({
            xxxEvent : function(){
                $('#'+me.mid).xxx.hide();
            }
        });
    }
    第二种,要用call或者apply更改this的作用域,这个得看你的代码怎么写的了。。第一个参数要为作用域的对象