0

我使用类似于下面的代码定义了一个 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”函数只对创建的最新弹出窗口做出反应,但有什么方法可以解决这个问题而无需传递任何'ClosePopup' 的参数?

4

1 回答 1

0

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

一旦你改变 classThisPopup=this;var classThisPopup=this;应该工作。

于 2013-02-11T13:31:41.680 回答