2012-07-12 7 views
6

私は現在、モーダルでビデオを入れるためにブートストラップに取り組んでいます。すべてはCMSによって生成されるので、どのくらいのビデオが表示されるかは制御できません。Twitter Bootstrap Modal - 非表示になっています

すべてがうまくいっています(私は各モーダルに独自のIDを付けなければなりません)。モーダルを閉じてビデオが実行されているとき、ビデオ(とサウンド)はバックグラウンドで引き続き実行されます。モーダルはxボタンで閉じているとき、私はこのように、モーダルでHTMLを更新する、ことをかわす

$('button.close').click(function(){ 
    var divcible=$(this).parent().parent().find(".modal-body"); 
    var html = divcible.html() 
    divcible.html("") 
    divcible.html(html) 
}) 

それと私の問題は、ユーザーが背景をクリックすることで、 HTMLはリセットされません。ブートストラップのウェブサイト上で、彼らは1つのモーダルが閉じたときに監視するために、この

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

を呼び出すが、私はANYモーダルが閉じたときに監視する方法があるかどう見つけたいと思います。 document要素にデフォルトで

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

    // edit for clarity: "that" will now reference the modal that was hidden 
    var that = this;   
}) 
+0

から、あなたは '$を(試してみました( 'hidden'、function(){ //何か... }) '?あなたのセレクターはIDではなくクラス名に基づいています。 –

答えて

9

は、あなたのモーダルにクラスを追加し、それを使用します。これは、モーダルがユーザーから隠されたときに起動されるhiddenイベントの場合もあります。このように、ANYモーダルが閉じたときに監視する方法は、次のようにdocument要素にイベントハンドラをアタッチすることです:

$(document).on('hidden', function() { 
    // a modal closes, so do what you want :) 
}) 
2

を、元のイベントの対象からほとんどのイベントbubble up

+0

残念ながら、ここでモーダルを実際に処理しているかどうかは確認していませんか? –

+0

実際には、Twitter Bootstrapモーダルコンポーネントが 'hidden'というイベントをトリガーします。名前空間はありません。このイベントの起源に関する追加情報はありません。 「隠された」という名前のイベントを検出するたびに、同じ名前の同じイベントをトリガできる他のコンポーネントがないことを確認する必要があります。あなたが@ Terryの解決策を考えても、問題はまったく同じです。これは、あなたがイベントをキャッチする場所の問題ではなく、どのイベントがトリガーされ、どの名前で起こるかの問題です。 – fsenart

+0

よろしいですか。公平であるために、Terryのソリューションは、正しいモーダルのみが考慮されることを保証します。それはもう少し仕事です。 –

8
$('#myModal').on('hidden.bs.modal', function (e) { 
    // do something... 
}) 

ブートストラップ3.xのドキュメント http://getbootstrap.com/javascript/#modals

+0

ありがとうございます。私はBootstrap v4 alphaを使用していました。あなたが言ったように、それが動作するには "hidden.bs.modal"が必要でした。ありがとう。 –

関連する問題