按ID的名称对Div进行排序

时间:2016-07-26 10:42:26

标签: javascript jquery

我在这里遇到一个奇怪的错误,我正在尝试按其ID的名称对div进行排序。你可以看看这里:

https://jsfiddle.net/veeco/t3wu9tss/5/

看起来很有效......但是我们错了......如果我们像这里的例子一样添加新ID:

https://jsfiddle.net/veeco/t3wu9tss/4/

这种情况破碎了。唯一的主要区别是增加了

 <div id="Palu">Palu<br></div>

我不知道为什么?这看起来很奇怪,任何人都可以提供见解吗?

对于那些需要在此处查看完整代码的人: HTML

<div class="cabang">
  <div id="Pematangsiantar">Pematangsiantar<br></div>
  <div id="Padang">Padang<br></div>
  <div id="Bengkulu">Bengkulu<br></div>
  <div id="Jambi">Jambi<br></div>
  <div id="Cikarang">Cikarang<br></div>
  <div id="Cirebon">Cirebon<br></div>
  <div id="Pontianak">Pontianak<br></div>
  <div id="Satui">Satui<br></div>
  <div id="Samarinda">Samarinda<br></div>
  <div id="Mataram">Mataram<br></div>
  <div id="Palu">Palu<br></div>

JavaScript的:

var $divs = jQuery(".cabang div");
var alphabeticallyOrderedDivs = $divs.sort(function (a, b) {
    return $(a).attr('id') > $(b).attr('id');
});
jQuery(".cabang").html(alphabeticallyOrderedDivs);

1 个答案:

答案 0 :(得分:2)

试试这个:

您可以使用String.prototype.localeCompare

var $divs = jQuery(".cabang div");

var alphabeticallyOrderedDivs = $divs.sort(function (a, b) {
    return String.prototype.localeCompare.call($(a).attr('id').toLowerCase(),$(b).attr('id').toLowerCase());
});

$(".cabang").html(alphabeticallyOrderedDivs);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="cabang">
      <div id="Pematangsiantar">Pematangsiantar<br></div>
      <div id="Padang">Padang<br></div>
      <div id="Bengkulu">Bengkulu<br></div>
      <div id="Jambi">Jambi<br></div>
      <div id="Cikarang">Cikarang<br></div>
      <div id="Cirebon">Cirebon<br></div>
      <div id="Pontianak">Pontianak<br></div>
      <div id="Satui">Satui<br></div>
      <div id="Samarinda">Samarinda<br></div>
      <div id="Mataram">Mataram<br></div>
      <div id="Palu">Palu<br></div>
</div>