如何在jquery中动态地对列表项进行排序?

时间:2012-08-19 07:04:31

标签: jquery list listview sorting

我的问题与我在Stack Overflow上发现的其他一些问题非常相似,但不完全相同。

我的简单列表如下:

<div id="preview" style="border: 1px solid #000;">

    <ul>
        <li style="list-style: none; display: none;" id="list1" class="ui-state-default">
            <input type="radio" name="answer" id="answer1" value="a" />
            <label for="answer1" id="displayAnswer1"></label>
        </li>

        <li style="list-style: none; display: none;" id="list2" class="ui-state-default">
            <input type="radio" name="answer" id="answer2" value="b" />
            <label for="answer2" id="displayAnswer2"></label>
        </li>

         <li style="list-style: none; display: none;" id="list3" class="ui-state-default">
            <input type="radio" name="answer" id="answer3" value="c" />
            <label for="answer3" id="displayAnswer3"></label>
        </li>
    </ul>
</div>

在名为'id'的变量中,值可以按随机顺序排列,
例如:id的第一个值可能是3,那么具有list3 id的li必须位于列表视图的第一个位置,然后id值可能是2,那么具有list2 id的li必须位于第二个位置列表视图,然后最后的id值可能是1,那么具有list1 id的li必须进入列表视图的第三个位置。

我搜索了很多,但是所有这些都是按字母顺序或其他类似的值排序,并且它们没有解决我的问题。

Thanx !!

1 个答案:

答案 0 :(得分:3)

​var ids = [3, 1, 2];

var items = $("#preview li").remove();
$.each(ids, function(index, id) {
    $(items).filter("li[id='list" + ids[index] + "']")
        .appendTo($("#preview ul"));
});

请参阅jsFiddle