2015-10-22 137 views
0

我试图设置一个应用程序,我需要一次动画几个项目。JQuery动画更多元素

function getData() { 
    for(i=0, i<data.length, i++) { 
     ... 
     animate(ID, top, left); 
    } 
} 

function animate (ID, top, left) { 
    $("#" + ID).animate({top: top, left: left}, {duration: 1000, queue: false}); 
} 

这样做的是,它通过AJAX从服务器获取数据,获取ID,顶部和左侧位置。我有这些ID的div,我需要动画他们的位置在左侧和顶部的坐标。问题是,当我调用该函数时,除了最后一个元素之外,所有元素都跳转到给定位置,这会激活它应该的动画。哪里可能是一个问题?

+0

你能设置在[的jsfiddle]样品演示项目(https://jsfiddle.net),因为我[无法重现该问题(https://jsfiddle.net/63khb9n5/1/)。 –

+4

@ViktorBahtev StackOverflow允许[snipplets](https://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/)。不再需要JsFiddle。 – k0pernikus

+0

我试图建立的jsfiddle,但它的作品没关系。我有它在线上http://unturned.linhy.cz 所有游标应simulteanously动画到新的位置,但只有一个动画。 – LinhyCZ

回答

0

您可以使用jQuery多选:

$("#element0, #element1").fadeIn() 

你的情况:

function getData() { 
    var ids = "" 
    for(i = 0; i < data.length; i++) { 
     // retrieve 'id', top and left 
     ids += "#" + id 
     if (i < data.length - 1) { 
      ids += "," 
     } 
    } 
    animate(ids, top, left); 
} 

function animate (ids, top, left) { 
    $(ids).animate({top: top, left: left}, {duration: 1000, queue: false}); 
} 

此Animate所有元素,通过 '身份证' 选择,同时。

+1

尝试更改** $(“#element0#element1”)。fadeIn()**到** $(“#element0,#element1”)。fadeIn(); ** 。在这种情况下,必须用逗号分隔每个ID,这样,多选才能正常工作。 –

+1

@DannyFardyJhonstonBermúdez谢谢,我错过了逗号! –