2014-01-25 29 views
0

如何在jQuery中實現排序。在下面的例子「Var列表」具有HTML代碼,我需要實施排序點擊一個提交「#點」。這在Firefox中工作正常,但不在IE和Cr​​ome中。請建議一些替代排序在jquery

$("#points").click(function() {   
     var list = $('#categoryDetailedView>li'); 
     var sortcol = ".points"; 
     if ($(this).attr("data-sort") == "desc") { 
      list.sort(function (a, b) { 
       alert($(sortcol, a).html()); 
       return parseInt($(sortcol, a).html(), 10) > parseInt($('.points', b).html(), 10); 
      }); 
      $(this).attr("data-sort", "asc"); 
     } else { 
      list.sort(function (a, b) { 
       return parseInt($(sortcol, a).html(), 10) < parseInt($('.points', b).html(), 10); 
      }); 
      $(this).attr("data-sort", "desc"); 
     } 

     $('#categoryDetailedView').html(list); 
    }); 

回答

2

在你的情況list是一個jQuery對象,而不是一個數組,這樣的排序方法不會在那裏。嘗試

$("#points").click(function() { 
    var list = $('#categoryDetailedView>li').get(); 
    var sortcol = ".points"; 
    if ($(this).attr("data-sort") == "desc") { 
     list.sort(function (a, b) { 
      return parseInt($(sortcol, a).html(), 10) > parseInt($('.points', b).html(), 10) ? 1 : -1; 
     }); 
     $(this).attr("data-sort", "asc"); 
    } else { 
     list.sort(function (a, b) { 
      return parseInt($(sortcol, a).html(), 10) < parseInt($('.points', b).html(), 10) ? 1 : -1; 
     }); 
     $(this).attr("data-sort", "desc"); 
    } 

    $('#categoryDetailedView').append(list); 
}); 

演示:Fiddle