不幸的是,我自己无法解决这个问题。我有一个包含几个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>
你对我有什么想法吗?
答案 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");
这会检查是否存在id
和class
。如果该类存在,则||
之后的表达式将重新评估为-1
,如果该ID存在,则将评估为1
。如果 ||
之前的表达式评估为0
(当它们具有相同的data-sort
值时),这将是相关的。