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();
     }
}

ここで、クラスの2つのインスタンスを作成すると、次のようになります。

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

Popup1.ClosePopup()とPopup2.ClosePopup()を使用してそれらを正常に閉じることができますが、閉じるボタンをクリックすると1つのボックスしか閉じられません。JQueryから「クリック」オプションとしてClosePopupを呼び出すと、変数スコープが台無しになることを理解しているようです。そのため、「ClosePopup」関数は作成された最新のポップアップにのみ反応しますが、渡す必要なしにそれを回避する方法はありますか? 'ClosePopup'への引数?

4

1 に答える 1

0

変数が欠落varしているためclassThisPopup、グローバルオブジェクト(ウィンドウ)で宣言されています。

変更 classThisPopup=this;するvar classThisPopup=this;と機能するはずです。

于 2013-02-11T13:31:41.680 に答える