在callback / event中调用类方法 - jQuery

时间:2013-02-11 11:25:22

标签: jquery callback

我使用类似下面的代码定义了一个Javascript'弹出窗口'类:

function Popup(strPopContID)
{
    this.strPopupContaineriD=strPopContID;

    /* code creates popup with ID equal to value of strPopContID with 'close button' in
       the top bar of popup with class 'CloseButton'*/

    classThisPopup=this;
    $('#'+this.strPopupContaineriD+' .CloseButton').click(function(){
       classThisPopup.ClosePopup();
    })


    this.ClosePopup=function(){
       $('#'+this.strPopupContaineriD).remove();
     }
}

现在,如果我创建了两个类的实例:

Popup1 = new Popup('FirstContainer');
Popup2 = new Popup('SecondContainer');

我可以使用Popup1.ClosePopup()和Popup2.ClosePopup()关闭它们,但单击关闭按钮只会关闭一个框。我似乎明白从JQuery调用ClosePopup作为'click'选项会搞乱变量范围,这就是为什么我的'ClosePopup'函数只对最新创建的popup做出反应但是有什么方法可以解决这个问题而无需传递任何'ClosePopup'的参数?

1 个答案:

答案 0 :(得分:0)

var变量缺少classThisPopup,因此它在全局对象(窗口)上声明。

classThisPopup=this;更改为var classThisPopup=this;后,它应该有效。