2013-01-22 1 views
13

私は、モーダルダイアログを隠すアクションにバインドされた関数を持っています。Twitter Bootstrapでは、モーダルダイアログの終了からイベントをバインド解除するにはどうすればよいですか?

私はthis質問に受け入れられた答えに似たコードを使用しています。

$('#myModal').on('hidden', function() { 
    // do something… 
}) 

ただし、このダイアログは編集のために再度開くことがあります。その場合は必ずしもこのコードを実行する必要はありません。ダイアログを閉じたときにもはや実行されないように関数を「バインド解除」する方法はありますか? the documentationに何も見つかりませんでした。

+0

モーダルイベントまたはモーダル自体に含まれるイベントのバインドを解除しますか? –

+0

質問を正しく理解している場合は、モーダルイベントのバインドを解除してください。私は、「隠された」もので起こるはずのものをはずしたい。 –

答えて

25

モーダル要素に関連付けられたすべてのイベントをバインド解除するようにあなたは何かを行うことができます:

バインド解除モーダル内のすべてのイベント:

/* First option */ 
$('#myModal').on('hidden', function (e) { 
    $(e.currentTarget).unbind(); // or $(this)   
}); 

/* Second option is to call it directly when needed */ 
$('#myModal').unbind(); 

Bootrapモーダルはまた、特定のイベントがそれに縛られているがのように、アンバインドするイベントを指定することもできます。あなたがモーダルの内容に結び付けられたイベントを削除したい場合は

/* Events are 'hidden', 'hide', 'show', 'shown' */ 
$('#myModal').unbind(/* specific event here */); 

、あなたは単純に$('#myModal').empty()内の要素を空にし、適切にそれらの要素をアンバインドすることができます。

+3

$( '#myModal')。unbind();それはちょっと乱暴です...また、コーナーの "X"を使ってウィンドウを閉じる機能をアンバインドします。 –

+1

あなたが言及したときに、モーダルイベントのバインドを解除したいと思っています。それとも、「隠された」イベントのバインドを解除するだけですか? $( '#myModal')のようなもの。unbind( 'hidden')。 –

+2

$( '#myModal')。unbind( 'hidden')はトリックを行います:) –

5

用途:

$('#myModal').off('hidden'); 

アンバインドではないのはなぜ?

jQuery 3.0以降、.unbind()は推奨されていません。それはjQuery 1.7以降の.off()メソッドに取って代わられていたので、その使用は既に推奨されていませんでした。

出典:jQuery API

関連する問題