0
我正在尝试使用jQuery在页面上动画云,并在它们离开最左侧时将它们移动到页面的末尾。jQuery this()循环问题
<div class="sprite cloud" id="cloud-1"> </div>
$(function() {
function runIt() {
$(".cloud").each(function(){
var speed = 20;
var Position = this.position().left;
var Width = this.width();
if((Position + Width) < 0)
{
Position = $(document).width();
this.css("left", Position);
}
});
$('#clouds').animate({"left": Position-speed},1000, "linear", runIt)}
runIt();
});
它的工作原理,如果我使用$( '#云-1'),等等,但如果我尝试使用每个()。我得到那个说
对象#有没有方法“位置”
我得到同样的错误任何功能,如胶印()的错误。
$(this)而不是解决它。
新代码:
$(function() {
function runIt() {
$(".cloud").each(function(){
var speed = 20;
var cloudPosition = $(this).position().left;
var cloudWidth = $(this).width();
if((cloudPosition + cloudWidth) < 0)
{
cloudPosition = $(document).width();
$(this).css("left", cloudPosition);
}
$(this).animate({"left": cloudPosition-speed},1000, "linear", runIt)
});
}
setInterval(runIt, 1000)
});
它只是现在动画一次。我认为这是因为runIt回调现在在一个循环中。我试图把它移到循环之外,但没有奏效。使用setInterval的工程确定,但很可能是不正确的方式做
这是或多或少吧!它不会循环,但它只有一个。有任何想法吗? – evandentremont 2013-02-22 13:40:25
@EPICWebDesign,你可以发布完整的代码吗? – Dogbert 2013-02-22 13:48:45
它在那里。这是测试网站:http://dev.napkinworks.ca/snowislandedu/ – evandentremont 2013-02-22 13:51:53