gpt4 book ai didi

javascript - 按属性对 Dom 元素进行排序 JS/Jquery

转载 作者:行者123 更新时间:2023-12-02 21:56:01 25 4
gpt4 key购买 nike

如果其中一个属性没有值,我的排序功能将不起作用:例如:

JS:

function sortEventsByOrder(a,b) {
const startA = parseInt($(a).data('order'));
const startB = parseInt($(b).data('order'));
return startA - startB;
}
$('#eventList').html($('#eventList li').sort(sortEventsByOrder))

HTML:

<html>
<head>
<link rel="stylesheet" href="lib/style.css">
<script src="lib/script.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>

<body>


<ul id="eventList">
<li data-order="5">Element 5</li>
<li data-order="">Element 3</li>
<li data-order="6">Element 6</li>
<li data-order="1">Element 1</li>
<li data-order="2">Element 2</li>
<li data-order="4">Element 4</li>
</ul>
</body>
</html>

enter image description here正如您从屏幕截图中看到的那样,仅从 6 开始排序。

如何将空值排序到底部?或者如何解决这个问题?

谢谢。

最佳答案

设置空白数据点以使用最大值

function sortEventsByOrder(a, b) {
const startA = parseInt($(a).data('order')) || Number.MAX_VALUE;
const startB = parseInt($(b).data('order')) || Number.MAX_VALUE;
return startA === startB ? 0 : startA > startB ? 1 : -1;
}

$('#eventList').append($('#eventList li').sort(sortEventsByOrder))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="eventList">
<li data-order="5"> Element 5
</li>
<li data-order=""> Element 3
</li>
<li data-order="6"> Element 6
</li>
<li data-order="1"> Element 1
</li>
<li data-order="2"> Element 2
</li>
<li data-order="4"> Element 4
</li>
</ul>

带小数的数字

function sortEventsByOrder(a, b) {
var orderA = $(a).data('order')
var orderB = $(b).data('order')
const startA = orderA === "" ? Number.MAX_VALUE: +orderA;
const startB = orderB === "" ? Number.MAX_VALUE: +orderB;
return startA === startB ? 0 : startA > startB ? 1 : -1;
}

$('#eventList').append($('#eventList li').sort(sortEventsByOrder))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="eventList">
<li data-order="5"> Element 5
</li>
<li data-order=""> Element 3
</li>
<li data-order="6"> Element 6
</li>
<li data-order="0"> Element 1
</li>
<li data-order="2.2"> Element 2
</li>
<li data-order="2.3"> Element 4
</li>
</ul>

关于javascript - 按属性对 Dom 元素进行排序 JS/Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60007737/

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