22

モーダルダイアログを非表示にするアクションにバインドされた関数があります。

私はこの質問に対する受け入れられた答えと同様のコードを使用しています。

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

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

4

2 に答える 2

43

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

モーダルですべてのイベントのバインドを解除します。

/* 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()それらの要素を適切にバインド解除できます。

于 2013-01-22T03:32:04.153 に答える