我有这个功能:
jQuery(document).ready(function ()
{
jQuery('.current-visitors').delay(3000).queue(function ()
{
jQuery(this).addClass('show').delay(1000).queue(function ()
{
jQuery(this).removeClass('show');
});
});
});
所以我试图在3秒后添加一个类,效果很好。然后,我设置了一个新的延迟,并为删除该类的新方法排队,因此1秒钟后应该删除该类,但是最后一部分不起作用。怎么了?
答案 0 :(得分:1)
您可以使用queue()方法来执行此操作,但是您使用了错误的链接方法,并且您忘记了对正在排队的每个函数调用dequeue()方法,因此,链被执行。
我稍微增加了隐藏元素的延迟,但是您可以在下一个代码段示例中检查它的工作情况:
jQuery(document).ready(function()
{
jQuery('.current-visitors').delay(3000).queue(function()
{
console.log("Now visible!")
$(this).addClass("show").dequeue();
})
.delay(3000).queue(function()
{
console.log("Now hidden!")
$(this).removeClass("show").dequeue();
});
});
.current-visitors {
background: lightblue;
display: none;
}
.show {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="current-visitors">CURRENT VISITORS</div>
答案 1 :(得分:0)
如果您需要简单的东西,我为您创建了一个简单的jQuery代码段:
jQuery.fn.wait = function(seconds){
var element = this, deferred = jQuery.Deferred();
setTimeout(function(){
deferred.resolve.apply(element);
}, seconds);
return deferred;
}
jQuery(document).ready(function () {
jQuery('.current-visitors').wait(3000).then(function () {
jQuery(this).addClass('show').wait(1000).then(function () {
jQuery(this).removeClass('show')
});
});
});
答案 2 :(得分:0)
这也是最小的工作解决方案:
jQuery('.current-visitors').delay(3000).queue(function () {
jQuery(this).addClass('show');
setTimeout(function () {
jQuery('.current-visitors').removeClass('show');
}, 6000);
});