这是我的代码
<div id="fascia-filtri-etichette">
<div data-title="m" data-preorder="order-2" class="item">m</div>
<div data-title="2013" data-preorder="order-3" class="item">2013</div>
<div data-title="2012" data-preorder="order-3" class="item">2012</div>
<div data-preorder="order-4" id="fascia-filtri-etichette-cancella">DELETE</div>
<div data-title="E" data-preorder="order-1" class="item">E</div>
<div data-title="S" data-preorder="order-1" class="item">S</div>
<div data-title="2014" data-preorder="order-3" class="item">2014</div>
</div>
<script>
var items = $("#fascia-filtri-etichette" + ' > div');
items.sort(function (a, b) {
return a.getAttribute('data-title') > b.getAttribute('data-title') || a.getAttribute('data-preorder') > b.getAttribute('data-preorder');
}).detach().appendTo($("#fascia-filtri-etichette"));
</script>我想首先为pre-order字段订购(升序)div,而不是(因此,对于前面的每个块)的标题。
其结果应该是:
E // order 1
S // order 1
m // order 2
2012 // order 3
2013 // order 3
2014 // order 3
DELETE // order 4我哪里错了?
发布于 2015-11-18 11:30:05
你在这里的错误是
它应该是这样的
items.sort(function (a, b) {
var po = a.getAttribute('data-preorder').localeCompare(b.getAttribute('data-preorder'));
if(po != 0) return po;
return a.getAttribute('data-title').localeCompare( b.getAttribute('data-title'));
});首先,它应该去检查预定,然后比较标题。下面是工作示例http://jsfiddle.net/rczjm4ph/
发布于 2015-11-18 11:21:40
使用2个排序函数而不是一个。测试用例http://jsfiddle.net/a47xv32f/
var items = $("#fascia-filtri-etichette" + ' > div');
items.sort(function (a, b) {
return a.getAttribute('data-title') > b.getAttribute('data-title');
}).sort(function (a, b) {
return a.getAttribute('data-preorder') > b.getAttribute('data-preorder');
}).detach().appendTo($("#fascia-filtri-etichette")); 发布于 2015-11-18 11:31:36
它仍然可以用一个sort()来完成。
var items = $("#fascia-filtri-etichette" + ' > div');
items.sort(function (a, b) {
var cmpOrder = a.getAttribute('data-preorder').localeCompare(b.getAttribute('data-preorder'));
if (cmpOrder !== 0) return cmpOrder;
return a.getAttribute('data-title').localeCompare(b.getAttribute('data-title'));
}); https://stackoverflow.com/questions/33778687
复制相似问题