我有一个搜索结果页面,其中显示的结果。我已经实现了用于排序的https://jsfiddle.net/f8w1hpj2/2/代码。
所有的名字排序都很好。但与价格排序,如果价格是1000,2000,2500,3000 (只有4位数)排序工作。但是如果价格是2000,3000,4000,9000,11000,那么按降序排序是不会发生的。
它显示了9000,4000,3000,2000年,然后是11000。
按价格排序的html:
按名称排序:
<div id= "row" class="row">
<div id="items" class="col-md-7">
<div class="clist">
<div data-sid="2000" data-name="c">
<a href="www.example.com?id=1">
<div style="margin-bottom: 2px; text-align: left; background-color: green;">
<div>
Name:
<h1>C</h1>
</div>
<div>Price:2000</div>
</div>
</a>
</div>
<div data-sid="3000" data-name="a">
<a href="www.example.com?id=2">
<div style="margin-bottom: 2px; text-align: left; background-color: green;">
<div>
Name:
<h1>A</h1>
</div>
<div>Price:3000</div>
</div>
</a>
</div>
<div data-sid="11000" data-name="b">
<a href="www.example.com?id=3">
<div style="margin-bottom: 2px; text-align: left; background-color: green;">
<div>
Name:
<h1>B</h1>
</div>
<div>Price:11000</div>
</div>
</a>
</div>
</div>
</div>
</div>
jquery
$(document).ready(function(){
$('#price').on('click', function(){
var s = $(this).data('sort'); console.log(s);
if(s === 0){
$(this).data('sort', 1);
$('.clist > div').sort(function(a,b){
return a.dataset.sid < b.dataset.sid
}).appendTo('.clist')
}else{
$(this).data('sort', 0);
$('.clist > div').sort(function(a,b){
return a.dataset.sid > b.dataset.sid
}).appendTo('.clist')
}
});
$('#name').on('click', function(){
var s = $(this).data('sort'); console.log(s);
if(s === 0){
$(this).data('sort', 1);
$('.clist > div').sort(function(a,b){
return a.dataset.name < b.dataset.name
}).appendTo('.clist')
}else{
$(this).data('sort', 0);
$('.clist > div').sort(function(a,b){
return a.dataset.name > b.dataset.name
}).appendTo('.clist')
}
});});
任何帮助都是非常感谢的。提前感谢
发布于 2015-04-06 21:50:40
你在排序字符串而不是数字。
$('.clist > div').sort(function(a,b){
return parseInt(a.dataset.sid, 10) > parseInt(b.dataset.sid, 10);
}).appendTo('.clist');减法也应该有效。
$('.clist > div').sort(function(a,b){
return a.dataset.sid - b.dataset.sid;
});发布于 2015-04-06 21:59:48
问题是,您正在将值作为字符串进行比较,将它们转换为数字,例如.
$(document).ready(function(){
$('#price').on('click', function(){
var s = $(this).data('sort'); console.log(s);
if(s === 0){
$(this).data('sort', 1);
$('.clist > div').sort(function(a,b){
return parseInt(a.dataset.sid) < parseInt(b.dataset.sid)
}).appendTo('.clist')
}else{
$(this).data('sort', 0);
$('.clist > div').sort(function(a,b){
return parseInt(a.dataset.sid) > parseInt(b.dataset.sid)
}).appendTo('.clist')
}
});
$('#name').on('click', function(){
var s = $(this).data('sort'); console.log(s);
if(s === 0){
$(this).data('sort', 1);
$('.clist > div').sort(function(a,b){
return a.dataset.name < b.dataset.name
}).appendTo('.clist')
}else{
$(this).data('sort', 0);
$('.clist > div').sort(function(a,b){
return a.dataset.name > b.dataset.name
}).appendTo('.clist')
}
});
});https://stackoverflow.com/questions/29480252
复制相似问题