Javascript JQuery复杂的类和ID排序
不幸的是,我自己无法解决这个问题。我有一个列表,其中有几个DIV,它们总是具有相同的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="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。在这个场景中,它是相同的。