我有两个功能,我想一次又一次地重复:
function rotation () {
plrotation();
function plrotation () {
alert('pl');
$('#pl').toggle(300).delay(10000).toggle(400).delay(2000, function (){errotation()});
alert('pl end');
}
function errotation () {
alert('er');
$('#er').toggle(300).delay(10000).toggle(400).delay(2000, function (){plrotation()});
alert('er end');
}
}
但是在第一次之后,我得到了“pl”和“pl end”警报,但切换不会发生,并且也没有开始错误旋转...任何想法我做错了吗?
或许还有其他方法可以做我需要的事情(显示元素1 =>等待=>隐藏元素1 =>等待=>显示元素2 =>等待=>隐藏元素2 => ; wait =>重启)
答案 0 :(得分:2)
您对jQuery.delay()
的最后一次通话不对。延迟只会延迟队列,它不会像其他动画功能一样使用完成处理程序。它不能用于替换setTimeout()
。
因此请使用setTimeout()
,而不是delay()
。
function rotate(el) {
var $el = $(el);
$el.toggle(300).delay(10000).toggle(400, function() {
var next = $el.is('#pl') ? '#er' : '#pl';
setTimeout(function() { rotate(next); }, 2000);
});
}
$(function() { rotate('#pl')});