从jQuery隐藏bootstrap模式第一次不起作用

时间:2015-11-01 04:04:29

标签: javascript jquery html css twitter-bootstrap

我在使用JQuery代码时遇到了一些问题。 我正在尝试创建一个“动态”网站,所以每次点击一个链接('a'元素都有'link'属性),我的代码将获取'link'属性并将其传递给jQuery的load()函数。事情是,我想让用户知道内容正在加载,所以我想我可以在开始加载之前显示一个模态,并在完成时隐藏它,但它不起作用。我第一次点击一个链接,模态停留在那里,并没有消失。但是,从第二次开始,我点击任何链接,一切都很完美。

为什么它第一次没有关闭?

$(document).on("click", "[link]", function() {
    $("#cargando").modal('show');
    $('#contenido').load($(this).attr('link'), function() {
        $('#cargando').modal('hide');
        $('.modal-backdrop').hide();
    });
});

额外信息:此代码和模态HTML一起位于名为dyn.html的文件中,该文件包含在其余页面的末尾。

编辑,模态代码:

<div class="modal modal-static fade" id="cargando">
<div class="modal-dialog"><div class="modal-content">
<div class="modal-body"><div class="text-center">
<h4>Cargando...</h4>
</div></div></div></div></div>

编辑,它适用于:

$(document).on("click", "[link]", function() {
$('#cargando').modal('show');
$('#contenido').load($(this).attr('link'), function() {
$('#cargando').hide();
$('.modal').hide();
$('.modal-backdrop').hide();
});
});

它很乱,但它是第一个有用的东西。

2 个答案:

答案 0 :(得分:1)

$('.modal').hide();

通过应用超时功能替换此代码。这就好了。

setTimeout(function(){
  $('.modal').hide();
},100);

这里100是超时时间。

答案 1 :(得分:0)

好吧,我一直在这种情况下。但是,这是我发现的,当模态想要弹出时,我尽量避免使用模态(&#39; show&#39;),所以我更喜欢将模态链接到元素并设置正确该元素的属性将弹出模态。

<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

所以试试这个,让我知道结果。不要使用

$("#cargando").modal('show');