0

私はブートストラップモーダルダイアログを使用しています。イベントハンドラを設定しているので、モーダルが閉じられると、ページ上の他の更新。私は完璧に動作する.delegateメソッドを使用していました。それが非難されたことを読んだ後、私は.onメソッドに移動しようとしましたが、ハンドラはトリガされませんでした。なぜ私は理解できません。比較のために2つのコードスニペットを示します。イベントハンドラは.on()では起動しませんが、.delegate()で動作します

委任:

$(document).delegate('#streamingPopup', 'hide.bs.modal', function() { ... }); 

オン:

$('#streamingPopup').on('hide.bs.modal', function() { ... }); 

コールバック関数をwithingないコード変更されました。

私が知る限り、ドキュメントで使用する必要があります(http://api.jquery.com/on/)。私はそれが 'hide.bs.modal'イベントと関係があるか、DOM自体ではなくjQueryオブジェクトに直接アタッチされているという事実を前提としていますが、なぜそれがうまくいかないのか分かりません1つではありません。誰かが私が間違っていることを指摘できますか?

+0

"古いjQueryイベントメソッドからの変換についての助言については、' .bind() '、' '.delegate( '')を参照してください。 ) '](http://api.jquery.com/delegate/)、' .live() 'を参照してください。" - [.delegate() '](http://api.jquery.com/delegate/)のdocoは' .on() 'を使って' .delegate() 'を置き換える方法を説明しています。そして、あなたは、[直接的かつ逸脱したイベント](http://api.jquery.com/on/#direct-and-delegated-events)のセクションを見逃しました。 – nnnnnn

答えて

0

あなたは.onの構文を変更する必要があります:これは働かなければならない

$(document).on('hide.bs.modal', '#streamingPopup', function() { ... }); 

、それは静的な親を対象として。 documentを静的な親の#streamingPopupに置き換えます。

関連する問題