2014-01-10 44 views
0

我正在使用Jquery進行一些練習,使我可以重新排序一些元素。我需要在這裏解釋它的例子是基於內部的一些<li>標籤像這樣的數字:本身回想一個函數「if語句」

<ul> 
    <li>4</li> 
    <li>5</li> 
    . 
    . 
</ul> 

在這裏,我要重新排序,我對這個功能有一定的邏輯,每個li元素中取出並放在它在底部。

$('li').each(function(){ 
    $(this).parent().append(this); 
    reorder ($(this)); 
}) 

然後與該另一功能評估先前元素變種分組的值,如果prev是低級然後將上述那一個的元素。

function reorder(p) { 
    var val = parseInt(p.text()), 
     prev = parseInt(p.prev().text()); 
    if (val > prev) { 
     p.prev().before(p); 
    } 
} 

現在的問題是我需要的,如果該說法是正確的重新評估與新prev元素的值要考慮新的位置。一些這樣的:

if (val > prev) { 
    p.prev().before(p); 
    // And Run again the function to compare with the new prev element 
} 

有人可以告訴我的方式來做到這一點嗎?

這裏是一個Fiddle Example


PD:我現在還有其他選項,如This得到重新排序,但例如去更多的功能召回。

回答

1

只需再次調用它(這被稱爲recursion):

if (val > prev) { 
    p.prev().before(p); 
    reorder (p); 
} 

Demonstration

+0

檢查也https://www.google.com/#q=recursion – steffen

+0

感謝我讀了一些關於它的但不知道如何撥打電話。 – DaniP