2011-05-09 226 views
6
function moveit() { 

    var newTop = Math.floor(Math.random()*350); 
    var newLeft = Math.floor(Math.random()*1024); 
    var newDuration = 9000 

    $('#friends').animate({ 
     top: newTop, 
     left: newLeft, 
!!! -->  width: "+="+((newTop-$('friends').css('top'))*3), 
     }, newDuration, function() { 
     moveit(); 
     }); 

} 

$(document).ready(function() { 
    moveit(); 
}); 

这是应该让图像飞来飞去(工程)。 我添加了标有“!!! - >”的行,它应该使图像越靠近页面底部越大。这段代码有什么问题

我做错了什么?该代码不会引发任何错误。

回答

5

$('friends').css('top')返回一个字符串,你需要将其转换为int之前,你可以用它从newTop

parseInt($('friends').css('top'), 10) 

减去会做的伎俩

另外你需要使用一个ID或类标识符在你的jQuery选择器,要么'#friends''.friends'但我想你正在寻找的东西的朋友的ID

试试这个

width: "+="+((newTop - parseInt($('#friends').css('top'), 10))*3), 
+0

它仍然不会改变大小。 – FreeSnow 2011-05-09 17:14:12

+0

@DalexL - 结合@吉米和@ richardneililagan的答案,我相信。 – JasCav 2011-05-09 17:19:43

+0

看到编辑的东西,可能会帮助 – Jimmy 2011-05-09 17:21:02

2

很确定你的问题是.css("top")会返回一个字符串值,如100px。您想使用.position().top来代替获取整数值。

4

难道你的意思是$('#friends')而不是仅仅是$('friends')?您的声明正在寻找一个元素标签“朋友”,并试图获得它的CSS属性值top

我建议你也缓存$('friends')选择器,这样你就不必为.animate()调用选择两次。