javascript - 按属性和链接文本对 div 中包含的链接进行排序

标签 javascript jquery html sorting

我有一个包含许多链接的 div。

每个链接都有一个“data-direction”属性,包含整数 1、2 或 3。

我想向按钮添加一个点击事件,以对 div 中的链接进行排序,首先按“数据方向”属性,然后按链接文本。

例如,如果我从以下内容开始:

<div id="link_list">
   <a href="#" data-direction="2">Allergy</a>
   <a href="#" data-direction="1">Walking</a>
   <a href="#" data-direction="3">Belltower</a>
   <a href="#" data-direction="1">Apple</a>
   <a href="#" data-direction="2">Affable</a>
</div>

...我的目标是排序为:

<div id="link_list">
   <a href="#" data-direction="1">Apple</a>
   <a href="#" data-direction="1">Walking</a>
   <a href="#" data-direction="2">Allergy</a>
   <a href="#" data-direction="2">Affable</a>
   <a href="#" data-direction="3">Belltower</a>
</div>

最佳答案

感谢 Rory McCrossan 的上述指导,以下内容似乎适用于我的用例。

这会设置一个名为 link_sort_direction 的变量,该变量用于记录相关 div 的排序状态。

<script type="application/javascript">
    var link_sorted_direction = true;
    $('#sort_links').click(function (e) {
        var elements = $('#div_links').children('a');
        if (link_sorted_direction === true) {
            link_sorted_direction = false;
            elements.sort(function (a, b) {
                var nameA = $(a).text();
                var nameB = $(b).text();
                return (nameA < nameB) ? -1 : (nameA > nameB) ? 1 : 0;
            })
        } else {
            link_sorted_direction = true;
            elements.sort(function (a, b) {
                var contentA = parseInt($(a).attr('data-direction'));
                var contentB = parseInt($(b).attr('data-direction'));
                if (contentA === contentB) {
                    var nameA = $(a).text();
                    var nameB = $(b).text();
                    return (nameA < nameB) ? -1 : (nameA > nameB) ? 1 : 0;
                } else {
                    return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
                }
            });
        }
        $('#div_links').append(elements);
        e.preventDefault();
    })
</script>

如果有任何改进建议,我将不胜感激。

关于javascript - 按属性和链接文本对 div 中包含的链接进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641214/

相关文章:

javascript - 如果输入字段包含文本,如何触发函数?

javascript - 创建一个更改不同元素的背景和文本颜色的按钮

javascript - 使用 jQuery,如何删除动态添加到页面头部的类

jquery - HTML 中的水平和对 Angular 线表格

html - 将行颜色添加到中继器中的奇数行

javascript - 当您过滤时, foreach 不适用于对象数组

javascript - jQuery UI droppables - 改变被丢弃的图像

javascript - 从变量分配数据时,Google 堆栈图表未呈现

jquery - 停止 Chrome 扩展以覆盖原始页面的 css

javascript - 通过拖动光标可选择图标