2012-07-12 107 views
6

我目前正在Bootstrap工作,以视频模式。一切都是通过cms生成的(所以我不能控制将显示多少视频。)Twitter Bootstrap莫代尔 - 隐藏任何

一切都很好(我必须给每个模态自己的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将不会重置。自举的网站上,他们称这种

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

当一个模式关闭监控,但我想找到是否有任何时态关闭监控方式。从原来的事件目标

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

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

你试过'$( '.modal-body')。on('hidden',function(){//做一些事情...... })'?将您的选择器基于类名而不是ID。 – 2012-07-12 15:23:13

回答

9

添加类的模态和使用。这也是hidden事件的情况,当模式完成对用户隐藏时触发。因此,一种方式来监控任何模式关闭如下:将事件处理程序附加到document元素:

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

默认情况下,大多数事件bubble updocument元素:

+0

不幸的是,你并没有检查你是否真的在这里处理模态,是吗? – 2012-07-12 15:46:07

+0

实际上,Twitter Bootstrap模块组件会触发一个名为“隐藏”的事件。没有命名空间,没有关于此事件起源的附加信息。任何时候当你发现一个名为'hidden'的事件时,你必须确保没有其他组件可以用相同的名字触发相同的事件。即使您考虑@ Terry的解决方案,问题也完全一样。这不是你在哪里发现事件,而是触发了哪个事件以及哪个名称。 – fsenart 2012-07-12 15:50:23

+0

好的。虽然,公平的说,特里的解决方案确保只考虑正确的模态。不过,这有点多。 – 2012-07-12 15:56:52

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

从引导3.x的文档 http://getbootstrap.com/javascript/#modals

+0

谢谢。我使用的是Bootstrap v4 alpha版,我需要“hidden.bs.modal”才能正常工作,就像你说的那样。谢谢。 – 2017-04-07 21:04:03