按字母顺序对数据属性进行排序

时间:2019-01-03 11:36:20

标签: javascript jquery html sorting

我的代码似乎无法访问数据属性名称,并且我尝试了许多不同的代码。

<div class="columns offer_table_rows" style=" position:relative;" data-personal="1" data-euro="" data-vehicle="122" data-roadside="neutral false " data-national="neutral false " data-home="neutral  true" data-onward="neutral  true" data-name="Different Brand 1">
$(".brandName").on('click', function() {
  $wrapper.find('.offer_table_rows').sort(function(a, b) {
    return $(a).dataset('name').toLowerCase() > $(b).dataset('name').toLowerCase();
  }).appendTo($wrapper);
})

$wrapper.find('.offer_table_rows').sort(function(a, b) {
  return b.dataset.name - a.dataset.name;
})

单击brandName过滤器按钮时,包装div查找一行并使用数据属性名称进行排序。我已经尝试了上述两种变体,但似乎都没有访问data属性,或者我只是不知道出了什么问题。

我肯定知道包装器找到了该行,并且所有工作都将一直有效,直到搜索到data属性为止,因为我有可以使用相同代码的数字排序。

编辑:这不是重复的,因为假定的答案不能回答这个问题。 使用$(a).data而不是我没有工作。我可以使用console.log数据名称 console.log($(a).data('name')),但它们似乎没有排序

EDIT2:

当评估data.a是否大于data.b =

时,我可以console.log true false
`$(".brandName").on('click', function() { $wrapper.find('.offer_table_rows').sort(function(a, b) { // console.log(a.dataset.name >b.dataset.name); })   }) 

但是,如果我尝试使它成为一个返回并附加到包装器的函数,则它什么都不做

1 个答案:

答案 0 :(得分:0)

使用localeCompare

.sort((a, b) => a.localeCompare(b));