Jquery通过排序值来移动元素

时间:2011-06-25 12:42:05

标签: javascript jquery html

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

例如我有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做到这一点,我将非常感谢他。

感谢您的回答

2 个答案:

答案 0 :(得分: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 :(得分:0)

我认为这种插入排序方法会改变你的对象位置:

http://www.tomgreenaway.com/2009/01/jquery-list-insertion-sort-plugin/

我认为你必须根据自己的需要调整它,因为你想要对p内的价格进行排序。