gpt4 book ai didi

jquery根据数据属性值对列表进行排序

转载 作者:行者123 更新时间:2023-12-03 21:28:19 25 4
gpt4 key购买 nike

给出以下列表

<ul class="listitems">
<li data-position="1">Item 1</li>
<li data-position="2">Item 2</li>
<li data-position="3">Item 3</li>
<li data-position="4">Item 4</li>
</ul>

页面上有一些功能可以允许这些项目更改位置。例如,他们可能会进入以下状态(仅作为示例,顺序可以是任何内容):

<ul class="listitems">
<li data-position="3">Item 3</li>
<li data-position="2">Item 2</li>
<li data-position="1">Item 1</li>
<li data-position="4">Item 4</li>
</ul>

我正在寻找一个小功能来重置订单。到目前为止,我有以下内容:

function setPositions()
{
$( '.listitems li' ).each(function() {
var position = $(this).data('position');
$(this).siblings().eq(position+1).after(this);
});
}

但它无法正常工作。我做错了什么?

另一个条件是列表的顺序可能没有改变,因此该函数也必须在这种情况下工作。

最佳答案

尝试使用sort()appendTo() ,

$(".listitems li").sort(sort_li) // sort elements
.appendTo('.listitems'); // append again to the list
// sort function callback
function sort_li(a, b){
return ($(b).data('position')) < ($(a).data('position')) ? 1 : -1;
}

片段:

$(function() {
$(".listitems li").sort(sort_li).appendTo('.listitems');
function sort_li(a, b) {
return ($(b).data('position')) < ($(a).data('position')) ? 1 : -1;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul class="listitems">
<li data-position="3">Item 3</li>
<li data-position="2">Item 2</li>
<li data-position="1">Item 1</li>
<li data-position="4">Item 4</li>
</ul>

关于jquery根据数据属性值对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com