我一直在乱搞这几个小时,我唯一可以缩小它的是,如果有14个元素要排序,它不能正常工作,但如果有十三个,它工作正常
我试图通过它们内部的价格值来做一个基本的DIV
元素。
这是简单的html -
<div class="wrap">
<button id="numBnt">Numerical</button>
<div id="container">
<div class="box">
<h2>£10.35</h2>
</div>
<div class="box">
<h2>£21.35</h2>
</div>
<div class="box">
<h2>£21.35</h2>
</div>
<div class="box">
<h2>£102.35</h2>
</div>
<div class="box">
<h2>£10.35</h2>
</div>
<div class="box">
<h2>£10.35</h2>
</div>
<div class="box">
<h2>£10.95</h2>
</div>
<div class="box">
<h2>£100.35</h2>
</div>
<div class="box">
<h2>£100.05</h2>
</div>
<div class="box">
<h2>£200.00</h2>
</div>
<div class="box">
<h2>£5510.25</h2>
</div>
<div class="box">
<h2>£19.80</h2>
</div>
<div class="box">
<h2>£5510.25</h2>
</div>
<div class="box">
<h2>£510.25</h2>
</div>
</div>
</div>
和javascript
var $divs = $("div.box");
$('#numBnt').on('click', function () {
var numericallyOrderedDivs = $divs.sort(function (a, b) {
return parseFloat($(a).find("h2").text().replace(/£/g, '')) > parseFloat($(b).find("h2").text().replace(/£/g, ''));
});
$("#container").html(numericallyOrderedDivs);
});
使用13个div元素,div完全排序。
这是一个示例 - http://jsfiddle.net/C2heg/380/
然后,如果我添加另一个并使其成为14个div,则排序无法正常工作。
这是一个示例 - http://jsfiddle.net/C2heg/378/
我正在敲打我的桌子!希望有人可以对此有所了解。
答案 0 :(得分:2)
使用a - b
代替a > b
$('#numBnt').on('click', function () {
var numericallyOrderedDivs = $divs.sort(function (a, b) {
return parseFloat($(a).find("h2").text().replace(/£/g, '')) - parseFloat($(b).find("h2").text().replace(/£/g, ''));
});
$("#container").html(numericallyOrderedDivs);
});
答案 1 :(得分:0)
你的小提琴都没有用,而且它与元素的数量无关。
但这有效:
var $divs = $("div.box");
$('#numBnt').on('click', function () {
var numericallyOrderedDivs = $divs.sort(function (a, b) {
var a = parseFloat($(a).find("h2").text().replace(/£/g, ''));
var b = parseFloat($(b).find("h2").text().replace(/£/g, ''));
return a - b;
});
$("#container").html(numericallyOrderedDivs);
});
比较两个项目时的排序函数如果相等则应返回0
,如果第一个大于第二个,则返回正数,否则返回负数