2013-02-11 88 views
0

我已經定義了一個JavaScript「彈出窗口」使用類似的代碼級以下:調用類方法 - jQuery的

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」的參數?

+0

在構造函數中Popup1 = new Popup();不應該使用Popup1 = new Popup(「mypopup1」)等參數; – 2013-02-11 13:21:30

+0

是的,這只是我在發佈問題時錯過了,容器名稱在我的代碼中創建的很好。編輯。 – user2061056 2013-02-11 13:28:14

回答

0

對於classThisPopup變量,您缺少var,因此它在全局對象(窗口)上聲明。

一旦你改變classThisPopup=this;var classThisPopup=this;它應該工作。

+0

哦,我的天 - 我怎麼錯過了?!非常感謝你。 – user2061056 2013-02-11 13:36:03