我知道这个问题已经被问过好几次了,但我就是不明白。 所以情况是这样的:
$ = jQuery;
var loop = function() {
$('#content').delay(800).css('background-color', "#B24296");
$('#content').delay(1600).css('background-color', "#AEB404");
$('#content').delay(2400).css('background-color', "#04B404");
loop();
}
$(document).ready(function() {
loop();
此设置给我一个“未捕获的范围错误:超出最大调用堆栈大小” 我也尝试过这个:
var loop = function() {
$('#content').delay(800).css('background-color', "#B24296", function() {
$('#content').delay(1600).css('background-color', "#AEB404", function() {
$('#content').delay(2400).css('background-color', "#04B404");
});
});
}
$(document).ready(function() {
setInterval(loop,3200);
使用此代码,仅发生第一个颜色变化,但其余部分不会发生。 所以不幸的是,这些都不能简单地时不时地改变背景颜色......有谁知道解决方案或者可以解释为什么这不起作用?
编辑: 设法让它像这样工作:
function color(t) {
$("div").delay(t*1).queue(function(n) {
$('#green').css('background-color', "#B24296");
n();
});
$("div").delay(t*2).queue(function(n) {
$('#green').css('background-color', "#AEB404"); n();
});
$("div").delay(t*3).queue(function(n) {
$('#green').css('background-color', "#04B404");
n();
});
setTimeout(function() {
color(500);
}, 500);
}
color(500);
最佳答案
在您的第一次尝试中,函数loop() 无限次调用自身,导致您报告的错误。
至于为什么 css/delay 组合不起作用,按照这个答案:Using jQuery delay() with css() delay() 与动画效果队列一起使用,对 css() 调用没有影响。
再次按照 Using jQuery delay() with css() 中的解决方案,这是您的用例的工作代码( http://jsfiddle.net/mmSVF/3/ ):
var loop = function() {
$('#content').delay(800).queue(function(next){
$(this).css('background-color', "#B24296");
next();
}).delay(1600).queue(function(next){
$(this).css('background-color', "#AEB404");
next();
}).delay(2400).queue(function(next){
$(this).css('background-color', "#04B404");
setTimeout(loop, 500);
next();
});
}
$(function(){
loop();
});
关于javascript - 简单循环 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19645623/