我正在尝试打开一个没有按钮的 jQuery 对话框来显示一些动画,然后自动在那里停留 3 秒钟,然后关闭。这是我认为应该起作用的 jsfiddle,但正如您所见,它只是打开和关闭而无需等待 3 秒:
jsfiddle:http: //jsfiddle.net/WrdM9/1/
有谁知道如何解决这个问题?谢谢!
我正在尝试打开一个没有按钮的 jQuery 对话框来显示一些动画,然后自动在那里停留 3 秒钟,然后关闭。这是我认为应该起作用的 jsfiddle,但正如您所见,它只是打开和关闭而无需等待 3 秒:
jsfiddle:http: //jsfiddle.net/WrdM9/1/
有谁知道如何解决这个问题?谢谢!
你应该使用setTimeout
:
open: function(event, ui) {
setTimeout(function(){
$('#dialog').dialog('close');
}, 3000);
}
这是小提琴:http: //jsfiddle.net/WrdM9/2/
使用 jQuery 延迟函数,例如
$( "#your-modal-id" ).slideDown( 300 ).delay( 800 ).slideUp( 400 );
如果您还想添加一些过渡,我不推荐使用 jQuery slideUp 和 slideDown 动画。这些很慢,因为它使用 CPU 而不是 GPU,而且动画本身感觉并不完全正确。
我会推荐Velocity.js。记得还要添加 Velocity UI js。你可以这样做:
$( "#your-modal-id" ).velocity('transition.slideUpBigOut', { delay: 3000 })
以下是仅使用 jQuery、CSS 和 JavaScript 并重复使用定时弹出窗口的方法,每次都带有不同的消息。此外,此示例不仅关闭,而且逐渐关闭。
首先,创建一个样式来移除标题栏。如果您愿意,您还可以为警报框添加样式。
<style>
.noTitleStuff .ui-dialog-titlebar {display:none;}
</style>
接下来,定义一个模态对话框。不要忘记在您的页面中包含 jQuery。请注意,如果未定义按钮,则下方的按钮区域将自动不显示。您还可以选择添加打开和关闭功能。
<script type="text/javascript">
//-- dialog-form0 - Modal Alert --//
$( ".dialog-form0" ).dialog({
autoOpen: false,
height: 50,
width: 600,
modal: true,
dialogClass: 'noTitleStuff',
buttons: {
},
open: function() {
},
close: function() {
}
});
</script>
现在创建一个 div 用作弹出窗口...
<!-- Popup0 for alert -->
<div id="popup0" class="dialog-form0" title="">
<div id="alert0"></div>
</div><!--// popup0 -->
最后,只要您想使用定时“警报框”(实际上是无边界模式弹出窗口),请包含以下代码块。
<script type="text/javascript">
$(function(){
$("#clientcustomer").on("change", function(event){
event.preventDefault();
document.getElementById('alert0').innerHTML = "Here's an alert message...";
$( ".dialog-form0" ).dialog( "open" );
setTimeout(function(){
$("#popup0" ).fadeOut(1000, function () { }); //This is the fade time
setTimeout(function(){
$( ".dialog-form0" ).dialog( "close" )
},850); // set the time here for close delay
//$( ".dialog-form0" ).dialog( fadeOut(2000) );
},500); // set the time here for how long to display
});
});
</script>
你的关闭延迟时间应该是淡入淡出时间的 80% 到 90%。如果相同,您会在关闭和消失之前看到一个空的小矩形。你想要的是在模态框改变大小之前淡出文本但关闭。
setTimeout(function() {
$('#bkgOverlay').fadeOut(400);
}, 6000);