gpt4 book ai didi

javascript - Jquery 错误地按 id 对
  • 进行排序
  • 转载 作者:太空狗 更新时间:2023-10-29 15:37:33 25 4
    gpt4 key购买 nike

    我有这个<li>按 id 排序:

    <ul id="members-list">
    <li id="member_8">
    <li id="member_4">
    <li id="member_7">
    <li id="member_12">
    <li id="member_11">
    <li id="member_13">
    <li id="member_5">
    <li id="member_6">
    <li id="member_9">
    <li id="member_3">
    <li id="member_2">
    <li id="member_1">
    <li id="member_10">
    </ul>

    我使用的代码:

    <script>
    $( document ).ready(function() {
    $("li[id*='member_']").sort(function (a, b) {
    return parseInt(a.id.replace('member_', '')) > parseInt(b.id.replace('member_', ''));
    }).each(function () {
    var elem = $(this);
    elem.remove();
    $(elem).appendTo("ul#members-list");
    });
    });
    </script>

    结果是:

    <ul id="members-list">
    <li id="member_5">
    <li id="member_8">
    <li id="member_7">
    <li id="member_1">
    <li id="member_2">
    <li id="member_3">
    <li id="member_4">
    <li id="member_6">
    <li id="member_9">
    <li id="member_10">
    <li id="member_11">
    <li id="member_12">
    <li id="member_13">
    </ul>

    <li>没有排序不正确,可能导致问题的原因是什么?

    最佳答案

    问题是你没有实现 sort正常运行。该函数应该返回正数、负数或零;你返回的是真/假。

    因此,当 a.id 小于/等于 b.id 时,函数返回 false,即零值;被视为a.id 等于 b.id;这会使排序功能偏离轨道。

    解决方案是改变这个:

    return parseInt(a.id.replace('member_', '')) > parseInt(b.id.replace('member_', ''));

    对此:

    return parseInt(a.id.replace('member_', '')) - parseInt(b.id.replace('member_', ''));

    说了这么多,您可以使用 detach 和单个 appendTo 重写您的代码,如下所示:

    $("li[id*='member_']").detach().sort(function(a, b) {
    return +a.id.replace("member_", "") - b.id.replace("member_", "");
    }).appendTo("ul#members-list");

    关于javascript - Jquery 错误地按 id 对 <li> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27500966/

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