1

我已经把排序代码都弄清楚了,它按预期工作。我喜欢二级过滤器的选项。

我有一个类似的系列:

<div id="member1" class="sortItem" data-factor="2">
    <span class="name">Jobs</span>
</div>
<div id="member2" class="sortItem" data-factor="2">
    <span class="name">Wayne</span>
</div>
<div id="member3" class="sortItem" data-factor="3">
    <span class="name">Wozniak</span>
</div>

因此,如果我对数据因子进行排序,我最终会得到(缩写):

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Wozniak         3
Wayne           2
Jobs            2

但我想要的是二级排序总是按字母顺序排列,如:

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Wozniak         3
Jobs            2
Wayne           2

和数据因子的反向排序(再次单击排序按钮):

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Jobs            2
Wayne           2
Wozniak         3

关于如何实现第二类的任何想法?

干杯!

4

2 回答 2

1

排序方法仅返回将按字母或数字排序的字符串或数字。

如果你想将两者结合起来,最小的公分母是 string

剩下的唯一问题是如何使数字按字母顺序排序。您可以通过添加前导 0 来填充它们来做到这一点。根据收藏的大小,您可能需要 1、2 或 3 位数字。

例如

对于 3 位数字(最多 1000 个元素),您的排序键将变为:

003Wozniak
002Jobs
002Wayne

这将按照您想要的方式进行排序。

于 2013-05-16T12:43:43.263 回答
1

实际上,您可以按多种事物进行排序,请查看同位素网站上的 getSortData 示例...

getSortData: {
    sort1: function($elem) {
        return parseInt($elem.attr('data-category-sort1'), 10);
    },
    bywidth: function($elem) {
        return $elem.width();
    },
    byname: function($elem) {
        return $elem.find('.name').text();
    }
    // more...
}
于 2013-11-21T03:01:45.203 回答