繁体   English   中英

杀死(关闭)Twitter Boostrap模式,已经打开?

[英]Killing (close) a Twitter Boostrap modal, already opened?

我如何杀死已经打开的Bootstrap模态? jsFiddle示例:

<script>
    $(function(){

        $('#myModal').on('show', function() {
            if(true) { /* Kill (close) this modal on some condition */}
        });

    });
</script>

我试过了:

if(true) { $('#myModal').modal('hide');   } // Not working
if(true) { $('#myModal').modal('toggle'); } // Too much recursion!!! :P
if(true) { return;                        } // Nope

首先, 正如@ChristianEngel正确指出的那样 ,你在问题中提供的JSFiddle是在非元素( #modal-delete )上监听show事件,而它应该附加到实际模态( #myModal )[你你的代码中做得正确]。

其次,尽管有正确的观察,我仍然可以证明我正在看到你抱怨的行为,这就是原因: show事件是在显示实际模态之前触发的,因此你调用hide()show()代码的其余部分之前。 解决这个问题的一种方法是收听所shown事件。 这不是办法!

执行您尝试的操作的正确方法是简单地在事件上调用preventDefault()

$('#myModal').on('show', function(e) {
  if (true) {e && e.preventDefault()}
});

的jsfiddle

这将节省一大堆不必要的代码。

顺便说一下,我只想补充一点,我认为这个场景很好地说明了同时showshown事件的原因。 虽然不是show事件的唯一原因,但动作发生之前触发它允许开发人员在需要时取消它。

好吧,一切都按预期工作。 我更新了你的小提琴: http//jsfiddle.net/nzjZM/1/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM