开发者

Order of properties matter with jQuery animate?

After just now spending too much time debugging why my jQuery animate() calls stopped wor开发者_如何学编程king correctly, I realized my problem was the properties in the animate() call have to be in a specific order. So the following will not work properly:

$('div.example').animate({left: 50, top: 100, opacity: 1});

What will happen is the div.example will fade in (if it wasn't already) and will just appear at position left:50, top:100, it will not animate. To get this to work as expected, you have to reorder:

$('div.example').animate({opacity: 1, left: 50, top: 100});

I tested this in FF4 and Chrome. This surprised me as I wasn't even aware that Javascript guaranteed order of properties in objects and jQuery makes no mention of this requirement in their docs. So my question is basically, am I doing something wrong? Is this expected? Is there documentation on what the proper order is? Will this work properly in all browsers?

I'm using jQuery UI as well. I know that enhances the standard animate method to allow for animating colors and such. Is that potentially the issue?


This a jQuery bug: cannot animate position and opacity at same time but is fixed in 1.6.1

In the meantime, you can fix it by adding "px" on the end:

$('div.example').animate({top: '100px', left: '50px', opacity: 1});


Does your properties left and top are declared earlier in css? Some browsers (webkit if I remember correctly) have problems animating properties that weren't declared. Try setting left and top to 0 or some other values and see if it works.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜