2012-07-12 18 views
6

Obecnie pracuję nad Bootstrap, aby umieścić wideo w modalu. Wszystko jest generowane przez cms (więc nie mam kontroli nad tym, ile filmów się wyświetli).Twitter Bootstrap Modal - On hidden any

Wszystko idzie dobrze (muszę nadać każdemu modalowi swój własny identyfikator i wszystko działa). Rzecz w tym, że po zamknięciu modalu i uruchomieniu wideo wideo (i dźwięk) nadal działa w tle.

unik, że gdy modalna jest zamknięcie za pomocą przycisku x, odświeżam HTML w modalnym, tak:

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

Mój problem z tym jest to, że jeśli użytkownik kliknie na uwadze powyższe, Html nie zostanie zresetowany. na stronie internetowej boostrap nazywają to

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

monitorować kiedy jeden modalne zamyka, ale chcę się dowiedzieć, czy istnieje sposób, aby monitorować gdy którykolwiek modalne zamyka.

+0

Czy próbowałeś '$ (".modal-body"). on ("ukryty", function() { // zrobić coś ... }) '? Oprzyj swój selektor na nazwie klasy, a nie na ID. –

Odpowiedz

9

Dodaj klasę do czasowniki modalne i używać:

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

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

Domyślnie większość wydarzeń bubble up od pierwotnego celu zdarzenia do elementu document. Dotyczy to również zdarzenia hidden, które jest uruchamiane, gdy modal jest już ukryty przed użytkownikiem. Tak więc, sposób monitorowania gdy którykolwiek modalne zamyka jest dołączenie obsługi zdarzeń do elementu document następująco:

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

Niestety, nie sprawdzasz, czy faktycznie korzystasz z modalu, prawda? –

+0

W rzeczywistości składnik modalny Bootstrap uruchamia zdarzenie o nazwie "ukryte". Nie ma obszaru nazw, żadnych dodatkowych informacji o pochodzeniu tego wydarzenia. Za każdym razem, gdy łapiesz wydarzenie o nazwie "ukryte", musisz mieć pewność, że nie ma innego elementu, który może wywołać to samo zdarzenie o tej samej nazwie. Problem jest dokładnie taki sam, nawet jeśli rozważasz rozwiązanie @ Terry'ego. Nie chodzi o to, gdzie można złapać zdarzenie, ale jakie zdarzenie jest wyzwalane i z jaką nazwą. – fsenart

+0

OK. Chociaż, aby być uczciwym, rozwiązanie Terry'ego zapewnia, że ​​rozważane są tylko odpowiednie modemy. Ale to trochę więcej pracy. –

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

z dokumentacją bootstrap 3.x http://getbootstrap.com/javascript/#modals

+0

Dzięki. Używałem Bootstrap v4 alpha i potrzebowałem "hidden.bs.modal", żeby działał, tak jak powiedziałeś. Dzięki. –

Powiązane problemy