我尝试:
为什么不起作用?
我的代码:
var $modal = $("#exampleModal");
$modal
.modal("show")
.delay(3000)
.modal("hide")
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
我知道an answer to the "bootstrap modal close after 4 seconds or user click"的问题,但是我希望我的代码的纯jQuery解决方案更加一致。
UDPATE::我特别想使用jQuery .delay()
方法。
答案 0 :(得分:2)
您可以使用javascript函数setTimeout()
以所需的预定义延迟执行隐藏。
注意::我不确定您是否知道jQuery .delay
的工作方式。它仅适用于jQuery效果队列,因此非常适合滑动和淡入淡出等,但不能延迟setTimeout
这样的延迟。
它不能替代JavaScript的本机setTimeout
函数。
var $modalDialog = $("#exampleModal");
$modalDialog.modal('show');
setTimeout(function() {
$modalDialog.modal('hide');
}, 3000);
如果您真的想使用delay
做些什么,可以考虑使用Underscore的_.delay()
函数:
var log = _.bind(console.log, console);
_.delay(log, 1000, 'logged later');
=> 'logged later' // Appears after one second.
与
setTimeout
类似,它在等待毫秒后调用函数。如果您传递了可选参数,则在调用该函数时会将它们转发给该函数。