gpt4 book ai didi

javascript - jQuery 使用数据 id 对元素进行排序

转载 作者:IT王子 更新时间:2023-10-29 03:10:56 26 4
gpt4 key购买 nike

我的 HTML 结构如下:

<div class="clist">
<div data-sid=1></div>
<div data-sid=2></div>
<div data-sid=2></div>
<div data-sid=1></div>
<div data-sid=2></div>
<div data-sid=2></div>
<div data-sid=1></div>
</div>

我想将它们排序为:

<div class="clist">
<div data-sid=1></div>
<div data-sid=1></div>
<div data-sid=1></div>
<div data-sid=2></div>
<div data-sid=2></div>
<div data-sid=2></div>
<div data-sid=2></div>
</div>

我正在使用以下功能:

function sortContacts() {
var contacts = $('div.clist'), cont = contacts.children('div');

cont.detach().sort(function(a, b) {
var astts = $(a).data('sid');
var bstts = $(b).data('sid')
return (astts > bstts) ? (astts > bstts) ? 1 : 0 : -1;
});

contacts.append(cont);
}

它没有按预期工作。

它在第一次运行时运行良好,但在添加新元素或更改 data-sid 属性后它不再运行。

演示:http://jsfiddle.net/f5mC9/1/

不工作?

最佳答案

您可以使用 dataset 属性来存储元素的所有自定义 data-* 属性,它返回一个字符串,以防您要转换字符串到一个数字,您可以使用 parseInt+ 运算符。

$('.clist div').sort(function(a,b) {
return a.dataset.sid > b.dataset.sid;
}).appendTo('.clist');

http://jsfiddle.net/CFYnE/

您自己的代码也可以工作:http://jsfiddle.net/f5mC9/

编辑:请注意IE10!及以下不支持 .dataset 属性,如果你想支持所有浏览器,你可以使用 jQuery 的 .data() 方法:

$('.clist div').sort(function(a,b) {
return $(a).data('sid') > $(b).data('sid');
}).appendTo('.clist');

关于javascript - jQuery 使用数据 id 对元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13490391/

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