我有一个包含项目的列表,并希望根据更新顺序中带有ID的“数组”(它被证明是一个对象,而不是数组)来更新项目的顺序。
这里是“new_order”:
$.post('/fetch/get_list', function(new_order)
{
// How should I handle new_order here?
}
如何将当前列表顺序更改为“new_order”?
一个想法是检索整个HTML列表,并使用php创建所有HTML列表。但在这种情况下我不能这样做。必须保留当前列表所包含的HTML。
所以,我只想更新当前打印列表中项目的顺序。
希望你理解我的意思。 :)
答案 0 :(得分:3)
这样的事情应该有效。 JsFiddle
var reorder = function (new_order) {
// the list we're reordering
var $list = $("#the-list");
// ordered li elements will be placed here
var ordered = [];
// detach the li elements from the list
var $items = $list.find("li").detach();
// sort them using the order array
$items.each(function (i, item) {
var id = parseInt($(item).data("id"));
var pos = new_order.indexOf(id);
ordered[pos] = item;
});
// append the ordered li elements to the list
$(ordered).appendTo($list);
};
注意:这假设列表中的每个li
在new_order
数组中都有相应的ID。