我们有以下标记
<input type="checkbox" class="foo" />
<input type="checkbox" class="foo" />
<input type="checkbox" class="foo" />
在某些时候,我为每个实例注入一个data
- keyValuePair(每个实例都是唯一的 - 我有几个调用 - 示例只涵盖一个赋值),如jQuery:
$('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)
来修复我的代码?非常重要的说明:
我不想改变我的UI中的顺序(nope:没有UI-sort-thing ...像tinySort),并且我的UI中的排序与预期结果不对应 - 这就是我需要的原因在运行中排序,而不是在创建时通过标记......
答案 0 :(得分: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;
});