2016-07-04 11 views
1

このコードをどこかから借用して、あるブートストラップモーダルから別のブートストラップモーダルに切り替えることができました。スイッチの後、ハンドラをオフにして、最初のモーダルを閉じるたびに切り替わらないようにします。私の問題は、モーダル切り替え機能を使用すると、のみ特定のイベントハンドラをオフにすることなく、特定のモーダルが終了したときに他のイベントをオフにすることができないことです。助言がありますか?あなたはswitchModals外にこの行を配置する必要がありjquery ".off"を使用して1つのイベントハンドラを削除する

//switch modals 
function switchModals(fromModal, toModal) { 
    $(fromModal).on('hidden.bs.modal', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(fromModal).off('hidden.bs.modal'); 
    }); 
    $(fromModal).modal('hide'); 
} 

答えて

0

は私が解決策を見つけました。私はちょうど関数に固有の名前空間をハンドラに与えなければなりませんでした。次に、 ".off()"メソッドで名前空間でバインド解除します。私は名前空間として "switch"を選択しました。

//switch modals 
function switchModals(fromModal, toModal) { 
    $(fromModal).on('hidden.bs.modal.switch', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(fromModal).off('.switch'); 
    }); 
    $(fromModal).modal('hide'); 
} 
1

$(<FromModalId>).modal('hide'); 
0

例えば、hidden.bs.modalコールバック内this代わりのfromModalを使用してみてください

//switch modals 
function switchModals(fromModal, toModal) { 
    $(fromModal).on('hidden.bs.modal', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(this).off('hidden.bs.modal'); 
    }); 
    $(fromModal).modal('hide'); 
} 
+0

これは機能しませんでした。私はそれが.off()のどこかで指定される必要があると思うが、正確にはわからない。 – Quin

+0

フルコード、またはあなたのウェブページへのリンクを投稿できますか? –

0

はモーダルを切り替えるには、次の試してみてください。

var el = fromModal+','+toModal; 
    $(el).on('hidden.bs.modal', function (e) { 
     $(el).not(this).modal('show'); 
     $(this).modal('hide'); 
    }); 
関連する問題