单击后如何延迟Bootstrap 3模式的显示

时间:2014-05-16 13:33:28

标签: javascript jquery twitter-bootstrap twitter-bootstrap-3

我试图在用户点击触发按钮后延迟显示Bootstrap模式:

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

查看Bootstrap 3文档,我可以看到有一个show事件可以挂钩但不确定如何在模式出现在屏幕上之前引入3秒延迟。希望有人能帮忙吗?

价: http://getbootstrap.com/javascript/#modals

4 个答案:

答案 0 :(得分:7)

您可以延迟点击触发按钮,然后直接激活模态:

$('[data-toggle=modal]').on('click', function (e) {
    var $target = $($(this).data('target'));
    $target.data('triggered',true);
    setTimeout(function() {
        if ($target.data('triggered')) {
            $target.modal('show')
                .data('triggered',false); // prevents multiple clicks from reopening
        };
    }, 3000); // milliseconds
    return false;
});

http://jsfiddle.net/mblase75/H6UM4/

答案 1 :(得分:5)

使用.on()挂钩事件:

var isFirstShowCall = false;

$('#myModal').on('show.bs.modal', function (e) {
    isFirstShowCall = !isFirstShowCall; // Prevents an endless recursive call
    if(isFirstShowCall) {
            e.preventDefault(); // Prevent immediate opening
            window.setTimeout(function(){
                $('#myModal').modal('show');
            }, 3000)
    }
});

http://jsfiddle.net/G9XeA/

答案 2 :(得分:1)

window.setTimeout(function() {
   $('#myModal').modal('show');
}, 5000)

对于演示,我使用了5000迷你秒。您可以根据需要使用它......

答案 3 :(得分:0)

如果以上任何方法都不起作用,请尝试此方法。它将完美运行。

$(window).ready(function() {
   setTimeout(function(){
       $('#myModal').modal('show');
   }, 2000);
});