Javascript sort()函数不起作用
当然,问题不在函数中,但正如下面的代码所示,有必要单击两次以按降序~升序排序。我怎样才能解决这个问题 我认为这方面的错误是:Javascript sort()函数不起作用,javascript,jquery,Javascript,Jquery,当然,问题不在函数中,但正如下面的代码所示,有必要单击两次以按降序~升序排序。我怎样才能解决这个问题 我认为这方面的错误是: function lxp(a, b){ var adate = new Date($(a).attr("data-date")); var bdate = new Date($(b).attr("data-date")); if(tipo == 'acrescente'){ return adate > bdate ? -1
function lxp(a, b){
var adate = new Date($(a).attr("data-date"));
var bdate = new Date($(b).attr("data-date"));
if(tipo == 'acrescente'){
return adate > bdate ? -1 : 1;
}else if(tipo == 'decrescente'){
return adate > bdate ? 1 : -1;
}
}
尝试将0添加到小于10的月份,如
而不是
我在你的小提琴a中这样做了,列表在第一次点击时就被排序了
编辑:更新的小提琴()
我明白了。不行
- 2015年
- 2012年
- 2010年
- 2010年
- 2009年
- 2008年
- 尝试将0添加到小于10的月份,如
而不是
我在你的小提琴a中这样做了,列表在第一次点击时就被排序了
编辑:更新的小提琴()
我明白了。不行
- 2015年
- 2012年
- 2010年
- 2010年
- 2009年
- 2008年
我从adate
和bdate
中得到了“无效日期”错误,因此我将您的日期字符串转换为数字(使用parseInt
)
我从adate
和bdate
中得到了“无效日期”错误,因此我将日期字符串转换为数字(使用parseInt
)并正常工作
将javascriptcode替换为:
$(function(){
var tllp = 15;
$('#blocoSite li').each(function(i, lep){
$(lep).css({ top : tllp });
tllp += 15;
});
});
function orderDate(tipo){
$('#ordered').remove();
var nposX = 0;
var nposY = 0;
if(tipo == 'acrescente'){
$("#ordeData").attr({'onclick' : 'orderDate("decrescente");'});
}else if(tipo == 'decrescente'){
$("#ordeData").attr({'onclick' : 'orderDate("acrescente");'});
}
function lxp(a, b){
var adate = new Date($(a).attr("data-date"));
var bdate = new Date($(b).attr("data-date"));
if(tipo == 'acrescente'){
return adate > bdate ? -1 : 1;
}else if(tipo == 'decrescente'){
return adate < bdate ? -1 : 1;
}
}
var order="";
nposY = 0;
$("#blocoSite li").sort(lxp).each(function(i, el){
order += el.outerHTML+"\n";
nposY += 15;
$(this).animate({
left: 200,
top : nposY
}, 800);
});
$('#ordered').html(order);
}
$(函数(){
var-tllp=15;
$('blocoSite li')。每个(函数(i,lep){
$(lep.css({top:tllp});
tllp+=15;
});
});
功能订单日期(tipo){
$('#ordered')。删除();
var-nposX=0;
var-nposY=0;
如果(tipo=='acrescente'){
$(“#ordeData”).attr({'onclick':'orderDate(“decrescente”);');
}否则,如果(tipo=='decrescente'){
$(“#ordeData”).attr({'onclick':'orderDate(“acrescente”);');
}
函数lxp(a,b){
var adate=新日期($(a).attr(“数据日期”);
var bdate=新日期($(b).attr(“数据日期”);
如果(tipo=='acrescente'){
返回日期>b日期?-1:1;
}否则,如果(tipo=='decrescente'){
返回日期
通过这种方式,您将按排序顺序放置列表项,而不是根据项的旧位置(除了排序之外)进行排序 将javascriptcode替换为:
$(function(){
var tllp = 15;
$('#blocoSite li').each(function(i, lep){
$(lep).css({ top : tllp });
tllp += 15;
});
});
function orderDate(tipo){
$('#ordered').remove();
var nposX = 0;
var nposY = 0;
if(tipo == 'acrescente'){
$("#ordeData").attr({'onclick' : 'orderDate("decrescente");'});
}else if(tipo == 'decrescente'){
$("#ordeData").attr({'onclick' : 'orderDate("acrescente");'});
}
function lxp(a, b){
var adate = new Date($(a).attr("data-date"));
var bdate = new Date($(b).attr("data-date"));
if(tipo == 'acrescente'){
return adate > bdate ? -1 : 1;
}else if(tipo == 'decrescente'){
return adate < bdate ? -1 : 1;
}
}
var order="";
nposY = 0;
$("#blocoSite li").sort(lxp).each(function(i, el){
order += el.outerHTML+"\n";
nposY += 15;
$(this).animate({
left: 200,
top : nposY
}, 800);
});
$('#ordered').html(order);
}
$(函数(){
var-tllp=15;
$('blocoSite li')。每个(函数(i,lep){
$(lep.css({top:tllp});
tllp+=15;
});
});
功能订单日期(tipo){
$('#ordered')。删除();
var-nposX=0;
var-nposY=0;
如果(tipo=='acrescente'){
$(“#ordeData”).attr({'onclick':'orderDate(“decrescente”);');
}否则,如果(tipo=='decrescente'){
$(“#ordeData”).attr({'onclick':'orderDate(“acrescente”);');
}
函数lxp(a,b){
var adate=新日期($(a).attr(“数据日期”);
var bdate=新日期($(b).attr(“数据日期”);
如果(tipo=='acrescente'){
返回日期>b日期?-1:1;
}否则,如果(tipo=='decrescente'){
返回日期
通过这种方式,您将按排序顺序放置列表项,而不是根据项的旧位置(除了排序之外)进行排序 对我来说,这似乎是最直接的方法:
$(函数(){
var-tllp=15;
$('blocoSite li')。每个(函数(i,lep){
$(lep.css({top:tllp});
tllp+=15;
});
});
$(文档).ready(函数(){
var tipo=“递减”;
$('#ordeData')。单击(函数(){
tipo=tipo==“acrescente”?“decrescente”:“acrescente”
var-nposY=0;
函数lxp(a,b){
var adate=新日期($(a).attr(“数据日期”);
var bdate=新日期($(b).attr(“数据日期”);
如果(tipo=='acrescente'){
返回日期>b日期?-1:1;
}否则,如果(tipo=='decrescente'){
返回日期
附带HTML
<ul id="blocoSite">
<li data-date="2010-05-12">2010</li>
<li data-date="2012-05-12">2012</li>
<li data-date="2015-05-12">2015</li>
<li data-date="2008-05-12">2008</li>
<li data-date="2009-05-12">2009</li>
<li data-date="2010-05-12">2010</li>
</ul>
<button id="ordeData">CLICK</button>
- 2010年
- 2012年
- 2015年
- 2008
- 2009
- 2010年
点击
对我来说,这似乎是最直接的方法:
$(函数(){
var-tllp=15;
$('blocoSite li')。每个(函数(i,lep){
$(lep.css({top:tllp});
tllp+=15;
});
});
$(文档).ready(函数(){
var tipo=“递减”;
$('#ordeData')。单击(函数(){
tipo=tipo==“acrescente”?“decrescente”:“acrescente”
var-nposY=0;
函数lxp(a,b){
var adate=新日期($(a).attr(“数据日期”);
var bdate=新日期($(b).attr(“数据日期”);
如果(tipo=='acrescente'){
返回日期>b日期?-1:1;
}否则,如果(tipo=='decrescente'){
返回日期