按文本对项目进行排序

时间:2015-07-23 10:25:27

标签: javascript jquery sorting text element

我不知道,试着找到简单的方法来排序2个父母的项目就像另一个。 我对排序功能非常糟糕

HTML:

timezone

vienna: 1将与denver: -7

排序相同

对此:

var date = new Date( new Date().getTime() + offset * 3600 * 1000);

这是我到目前为止的jQuery:

<div class="a">
    <h2>A :</h2>
    <li>One</li>
    <li>2</li>
    <li>Ipsum</li>
    <li>4</li>
    <li>5</li>
</div>

<div class="b">
    <h2>B :</h2>
    <span>#5</span>
    <span>#One</span>
    <span>#Ipsum</span>
    <span>#4</span>
    <span>#2</span>
</div>

现场演示: http://jsfiddle.net/nu6zts1y/

我也在寻找好的表现(可以使用Native JS)

更新:很抱歉,文字将是文字,而不仅仅是数字

2 个答案:

答案 0 :(得分:0)

<强>更新

您可以使用Array.prototype.sort()并手动映射/检查字符串编号

&#13;
&#13;
var map = {
  '#One': 1,
  '#Two': 2,
  '#Three': 3,
  '#Four': 4,
  '#Five': 5
};
$('.b').append($($('.b span').get().sort(function(a, b) {
  var aInt = !parseInt(a.textContent.replace('#', '')) ? map[a.textContent] : a.textContent.replace('#', '');
  var bInt = !parseInt(b.textContent.replace('#', '')) ? map[b.textContent] : b.textContent.replace('#', '');

  if (aInt < bInt) {
    return -1;
  }
  if (aInt > bInt) {
    return 1;
  }
  // a must be equal to b
  return 0;
})));
&#13;
div {
  display: inline-block;
  padding: 10px;
  width: 100px;
  background: #333;
  color: #fff;
}
li,
span {
  display: block;
  border-bottom: 1px solid #888;
}
.junk {
  display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="a">
  <h2>A :</h2>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</div>

<div class="b">
  <h2>B :</h2>
  <span>#5</span>
  <span>#One</span>
  <span>#3</span>
  <span>#4</span>
  <span>#2</span>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用:

$('.b').find('span').sort(function (a, b) {
   return parseInt($(a).html().replace('#',''),10) -parseInt($(b).html().replace('#',''),10) 
}).appendTo('.b');

<强> Working Demo