2015-10-22 139 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謝謝,我錯過了逗號! –