我已经编制了一个促销活动"弹出"窗口出现在我的产品页面上,以及一个"掩码"出现在弹出窗口后面的页面内容变暗后出现在弹出窗口后面。
使用以下代码
显示这两个元素 <div id="boxes">
<div id="dialog" class="window">
<div class="close"></div>
</div>
<div id="mask"></div>
</div>
<div class="page-content">
<a class="show-box"></a>
</div>
<script>
$(document).ready(function() {
var id = '#dialog';
//Get the screen height and width
var maskHeight = $(document).height();
var maskWidth = $(window).width();
//Set heigth and width to mask to fill up the whole screen
$('#mask').css({'width':maskWidth,'height':maskHeight});
$('#mask').delay( 7000 );
//transition effect
$('#mask').fadeIn(500);
$('#mask').fadeTo("slow",0.5);
//Get the window height and width
var winH = $(window).height();
var winW = $(window).width();
//Set the popup window to center
$(id).css('top', winH/2-$(id).height()/2);
$(id).css('left', winW/2-$(id).width()/2);
//transition effect
$(id).delay( 7000 );
$(id).fadeIn(2000);
//if close button is clicked
$('.window .close').click(function (e) {
//Cancel the link behavior
e.preventDefault();
$('#mask').hide();
$('.window').hide();
});
//if mask is clicked
$('#mask').click(function () {
$(this).hide();
$('.window').hide();
});
//toggle view link
$('#show-box').click(function () {
$('#mask').fadeIn(500);
$('#mask').fadeTo("slow",0.5);
$('.window').fadeIn(500);
$('.window').show();
});
});
</script>
最初,脚本立即在document.ready上加载了弹出窗口。我在显示弹出窗口之前添加了$('#mask').delay( 7000 );
和$(id).delay( 7000 );
等待7秒。
这很有效,只有一个蠢货。在7秒的延迟时间内,页面的所有悬停功能都将丢失。面具本身确实有一个覆盖整个屏幕的固定位置,所以即使它在7秒钟内没有显示,也就像加载了面具元素一样。
如何正确延迟弹出窗口并屏蔽整整7秒,同时在此期间不破坏页面的悬停功能?
答案 0 :(得分:1)
您只需使用setTimeout
即可。创建一个在单击后处理所有内容的函数,这样您就可以有效地捆绑它并在settimeout中调用该函数。
function delayedFadeIn(){
//place the code you wish to be delayed here
...
}
(...)
$(document).ready(function() {
var id = '#dialog';
//Get the screen height and width
var maskHeight = $(document).height();
var maskWidth = $(window).width();
setTimeout(delayedFadeIn, 7000);
(...)
}