Javascript JQuery复杂的类和ID排序

Javascript JQuery复杂的类和ID排序,javascript,jquery,sorting,Javascript,Jquery,Sorting,不幸的是,我自己无法解决这个问题。我有一个列表,其中有几个DIV,它们总是具有相同的ID和类。我根据“数据排序”属性对列表进行排序,效果非常好 现在看起来是这样的: <div id="divList"> <div id="hsdf" data-sort="1"></div> <div class="hsdf" data-sort="1"></div> <div class="vasfd" data-sort="2">&l

不幸的是,我自己无法解决这个问题。我有一个列表,其中有几个DIV,它们总是具有相同的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('#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');

像这样的方法应该会奏效:

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');

您可以在
排序功能中使用此选项:

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

这将检查是否存在
id
。如果类存在,则
|
之后的表达式将计算为
-1
,如果ID存在,则将计算为
1
。如果
|
之前的表达式的计算结果为
0
(当它们具有相同的
数据排序
值时),则这将是相关的。

您可以在
排序
函数中使用它:

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

这将检查是否存在
id
。如果类存在,则
|
之后的表达式将计算为
-1
,如果ID存在,则将计算为
1
。如果
|
之前的表达式的计算结果为
0
(当它们具有相同的
数据排序
值时),这将是相关的。

谢谢,因此它起作用了。“B”而不是“A”`返回jQuery(A).attr('data-sort')-jQuery(B).attr('data-sort')| |!jQuery(b).attr('id')-!jQuery(b).attr('class')`@od_uu这些是等效的。排序功能比较
a
b
。我的方法首先排序
a
,如果它有一个类,那么你的方法最后排序
b
,如果它有一个ID。在这个场景中,它是一样的。谢谢,所以它成功了。“B”而不是“A”`返回jQuery(A).attr('data-sort')-jQuery(B).attr('data-sort')| |!jQuery(b).attr('id')-!jQuery(b).attr('class')`@od_uu这些是等效的。排序功能比较
a
b
。我的方法首先排序
a
,如果它有一个类,那么你的方法最后排序
b
,如果它有一个ID。在这个场景中,它是相同的。