我将列表项推送到一个数组中,它们具有数据排序值。当我们从数组中调用它们时,我需要以数据排序顺序输出它们,其中1将首先出现,2秒,依此类推。 然而如果数据排序等于0,我需要做一些与项目完全不同的事情。
JS
var arr = [];
$('ul li').each(function() {
arr.push($(this));
});
$('ul.main').html('');
$.each(arr, function (i) {
var item = arr[i];
var content = $(item).html();
var itemSort = $(item).data('sort'); //Need to sort by this value
if(itemSort != '0') {
$('ul.main').append('<li>' + content + '</li>')
} else {
$('.another-list').append('<li>' + content + '</li>'); // Sort order of 0's doesn't matter
}
});
HTML
<ul class="main">
<li data-sort="3">Item 1</li>
<li data-sort="2">Item 2</li>
<li data-sort="1">Item 3</li>
<li data-sort="0">Item 4</li>
</ul>
<ul class="another-list"></ul>
答案 0 :(得分:3)
需要从所选元素创建数组是多余的,因为jQuery对象是所选元素的数组。
此外,需要获取html()
的{{1}},然后在全新的li
中创建它是多余的,因为您可以通过使用仅将元素从一个列表移动到另一个列表li
。
考虑到这一点,您可以使用append()
和sort()
的组合来大规模简化代码:
filter()