JQuery复杂的类和ID排序

时间:2017-03-04 22:53:25

标签: javascript jquery sorting

不幸的是,我自己无法解决这个问题。我有一个包含几个DIV的列表,它总是具有相同的ID和类。我根据“数据排序”属性排序的列表非常有用。

目前它看起来像这样:

gsub()

我想在列表中首先排序类然后ID来。像这里:

<div id="divList">

<div id="hsdf" data-sort="1"></div>
<div class="hsdf" data-sort="1"></div>

<div class="vasfd" data-sort="2"></div>
<div id="vasfd" data-sort="2"></div>

<div id="asdfas" data-sort="3"></div>
<div class="asdfas" data-sort="3"></div>

</div>

使用jQuery完成“data-sort”属性排序:

<div id="divList">

<div class="hsdf" data-sort="1"></div>
<div id="hsdf" data-sort="1"></div>

<div class="vasfd" data-sort="2"></div>
<div id="vasfd" data-sort="2"></div>

<div class="asdfas" data-sort="3"></div>
<div id="asdfas" data-sort="3"></div>

</div>

你对我有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

jQuery('#divList').find('div').sort(function (a, b) {
    var diff = jQuery(a).attr('data-sort') - jQuery(b).attr('data-sort');
    if (diff == 0) {
        if (jQuery(a).attr('class') && jQuery(a).attr('class') != '') {
            diff = -1;
        } else {
            diff = 1;
        }
    }
    return diff;
}).appendTo('#divList');

答案 1 :(得分:1)

您可以在sort功能中使用此功能:

return jQuery(a).attr('data-sort') - jQuery(b).attr('data-sort')
  || !!jQuery(a).attr("id") - !!jQuery(a).attr("class");

这会检查是否存在idclass。如果该类存在,则||之后的表达式将重新评估为-1,如果该ID存在,则将评估为1。如果 ||之前的表达式评估为0(当它们具有相同的data-sort值时),这将是相关的。