2012-07-12 20 views
6

Actualmente estoy trabajando en Bootstrap para poner un video en un modal. Todo se genera a través de cms (por lo que no tengo control sobre la cantidad de videos que se mostrarán).Twitter Bootstrap Modal - En oculto cualquier

Todo va bien (tengo que dar a cada modal su propia identificación y todo funciona). La cosa es que, cuando cierras el modal y el video se está ejecutando, el video (y el sonido) continúan ejecutándose en segundo plano.

a Dodge que, cuando un modal se cierra con el botón x, restauro el html en el modal, como esto:

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

Mi problema con esto es que si el usuario hace clic en el telón de fondo, la Html no se reiniciará. en el sitio web de boostrap llaman a este

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

para vigilar cuando se cierra modal, pero quiero encontrar si hay una manera de controlar cuando se cierra CUALQUIER modal.

+0

Ha intentado '$ ('.modal-body'). on ('hidden', function() { // hacer algo ... }) '? Base su selector en un nombre de clase en lugar de por ID. –

Respuesta

9

agregar una clase a sus modales y el uso que:

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

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

Por defecto, la mayoría de los eventos bubble up del destino del evento original al elemento document. Este es también el caso del evento hidden que se activa cuando el modal ha terminado de ocultarse al usuario. Por lo tanto, una manera de controlar cuando se cierra CUALQUIER modal es adjuntar un controlador de eventos para el elemento document de la siguiente forma:

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

Lamentablemente, no está comprobando si realmente está manejando un modal aquí, ¿o sí? –

+0

De hecho, el componente modal de Twitter Bootstrap activa un evento llamado 'oculto'. No hay espacio de nombres ni información adicional sobre el origen de este evento. Cada vez que detecte un evento llamado 'oculto', debe asegurarse de que no haya otro componente que pueda desencadenar el mismo evento con el mismo nombre. El problema es exactamente el mismo, incluso si se tiene en cuenta la solución de @Terry. No se trata de dónde atrapar el evento, sino de qué evento se desencadena y con qué nombre. – fsenart

+0

Bien. Aunque, para ser justos, la solución de Terry asegura que solo se consideren los modales correctos. Sin embargo, es un poco más trabajo. –

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

de documentación 3.x arranque http://getbootstrap.com/javascript/#modals

+0

Gracias. Estaba usando Bootstrap v4 alpha y necesitaba "hidden.bs.modal" para que funcionara, como dijiste. Gracias. –