2011-06-12 87 views
1
function thumb_wheel() { 
    $("#slider .nivo-controlNav img").animate({left: '-600px'}, 14000, function(){ 
     $(this).css({left:'0px'}, function(){ 
      thumb_wheel(); 
     }); 
    }); 
}; 

基本上,一旦动画完成后,我想重置“left”到0px,并再次调用自己。我尝试过使用setInterval等不同的方式对它进行格式化,检查Google,Stack和#jQuery ......无论我尝试什么,它似乎在添加重置时都会“挂起”。有任何想法吗?jQuery动画回调问题

+0

你有没有试图消除'的.css()'回调,只是调用两个函数顺序? – Blender 2011-06-12 20:44:14

+0

嗯,我只是注意到我错过了一个括号,所以我补充说,现在它回调,但它不运行thumb_wheel();再次。编辑 - 并尝试顺序没有工作@ _ @谢谢你的帮助:) – 2011-06-12 20:50:17

+0

你可以做一个'while'循环。我不确定还有什么建议,因为代码看起来很好。 – Blender 2011-06-12 20:51:27

回答

1

你可以看到在此的jsfiddle工作的解决方案: http://jsfiddle.net/GjemU/

你必须在你的代码中的一些语法错误,以及您尝试使用一个不存在的回调上.css

+0

你打败了我!补充一点,你发布的代码不起作用的原因是'css'没有回调。 http://api.jquery.com/css/ – 2011-06-12 20:52:40

0

回调正在在不同的范围内调用,所以this变量指向与您想象的不同的对象。
解决方案是一个封闭的使用:

function thumb_wheel() { 
    var el = $("#slider .nivo-controlNav img"); 
    el.animate({left: '-600px'}, 14000, function(){ 
     el.css({left:'0px'}); 
     thumb_wheel(); 
    }); 
}; 
+1

我相信'this'正是他认为的那样,你的代码现在会让'that'等于窗口对象。 – 2011-06-12 20:53:59