2011-06-25 65 views
2

我对元素的排序和排列有问题。首先,我需要按某个值对元素进行排序(例如价格,日期,名称),然后根据此值在页面上应用元素的布局。我发现了很多插件和排序功能,但它们只是改变了排列下元素的值。我不知道如何排序元素,然后根据排序值更改它们的位置。jquery通过排序值移动元素

,比如我有HTML结构:

<div id="page-wrap> 
    <ul> 
    <li class="first"> 
    <p class="price">2500</p> 
    </li> 
    <li class="second"> 
    <p class="price">4300</p> 
    </li> 
    <li class="third"> 
    <p class="price">1800</p> 
    </li> 
    <li class="fourth"> 
    <p class="price">3871</p> 
    </li> 
    </ul> </div> 

而且结果应该是(例如排序和最低价移动元素):

<div id="page-wrap"> 

    <ul> 
    <li class="third"> 
    <p class="price">1800</p> 
    </li> 
    <li class="fisrt"> 
    <p class="price">2500</p> 
    </li> 
    <li class="fourth"> 
    <p class="price">3871</p> 
    </li> 
    <li class="second"> 
    <p class="price">4300</p> 
    </li> 

    </ul></div> 

正如你可以看到我想要改变整个以最低的价格安排要素,而不仅仅是价值。

如果一些大师知道如何通过jquery或javascript做到这一点,我将非常感谢他。

谢谢回答

回答

5

而不使用插件,这应该工作:

function comparePrice(a, b) { 
    return (parseInt($(a).find(".price").text(), 10) - parseInt($(b).find(".price").text(), 10)); 
} 

$("li").sort(comparePrice).appendTo("#page-wrap ul"); 
+1

无需每次。 '$(“li”)。sort(comparePrice).appendTo(“#page-wrap ul”)'应该可以正常工作。 –

+0

你是对的,编辑我的初步答案。 –

+0

谢谢比约恩它的作品像魅力! :) – Anthony