1

我们有以下标记

<input type="checkbox" class="foo" />
<input type="checkbox" class="foo" />
<input type="checkbox" class="foo" />

在某些时候,我使用datajQuery 为每个实例注入一个 -keyValuePair(每个实例都是唯一的 - 我有几个调用 - 示例仅涵盖一个分配),例如:

$('myMagicSelector').data('counter', '1');

现在我正在尝试使用以下代码对该实例进行排序

var $checkboxes = $('.foo').filter('checked');
$checkboxes.sort(function (a, b) {
    var dataA = a.data('counter');
    var dataB = b.data('counter');

    return dataA < dataB;
});

我知道……这行不通……

  • 如何修复我的代码,既不引入$(a)也不引入$(b)排序功能?
  • 有没有可以为我做这个的库(jquery-specific)?
  • 还有其他输入吗?

非常重要的说明:
我不想更改我的 UI 中的排序(不:没有 UI-sort-thing... like tinySort),并且我的 UI 中的排序与预期结果不对应 - 这就是我需要的原因即时排序,而不是通过创建时的标记...

4

1 回答 1

2

您可以使用el.getAttribute("data-counter")代替$(a).data("counter")

var $checkboxes = $('.foo:checked');
$checkboxes.sort(function (a, b) {
    var dataA = a.getAttribute("data-counter");
    var dataB = b.getAttribute("data-counter");
    return dataA < dataB;
});

示例小提琴

于 2012-04-16T07:40:43.900 回答