Javascript 尝试按字母顺序排列jqueryui;除IE外,所有产品均可使用

Javascript 尝试按字母顺序排列jqueryui;除IE外,所有产品均可使用,javascript,jquery,jquery-ui,internet-explorer,Javascript,Jquery,Jquery Ui,Internet Explorer,我正在尝试做一个客户端的jQueryUIAccordion,按照标题文本的字母顺序放置accordion部分 jQueryUI结构包括一个h3作为类别标题,以及一个div作为该类别的内容。因此,我需要对h3文本进行排序,但在DOM中串联移动每个h3及其后续div 我有以下功能,可以在FF和Chrome中使用,但不能在任何风格的IE中使用: function sort_accordion_headers() { var tempArray = []; //Push h3-div p

我正在尝试做一个客户端的jQueryUIAccordion,按照标题文本的字母顺序放置accordion部分

jQueryUI结构包括一个h3作为类别标题,以及一个div作为该类别的内容。因此,我需要对h3文本进行排序,但在DOM中串联移动每个h3及其后续div

我有以下功能,可以在FF和Chrome中使用,但不能在任何风格的IE中使用:

function sort_accordion_headers() {
    var tempArray = [];
    //Push h3-div pairs into array
    $('.accordion h3').each(function(i,ui) {
        tempArray.push(new accordion_sort_object(ui,$(ui).next('div')));
    });
    //Sort the array on header text
    tempArray.sort(function(a,b) {
                var keyA = $(a.header).text();
                var keyB = $(b.header).text();
                return (keyA > keyB) ? 1 : 0;   
    });
    //Clear accordion contents and replace with re-sorted content
    for (var i in tempArray) {
        $('.accordion').append(tempArray[i].header).append(tempArray[i].div); 
    }
}

//Creates custom object for sorting accordion headers
function accordion_sort_object($htag,$div) {
    this.header = $htag;
    this.div = $div;
}
知道为什么这在IE中不起作用吗?感觉它一定和append()或sort()函数有关,但我不确定是什么

编辑:澄清一下,它不会在IE中抛出错误;它只是不执行排序。手风琴部分保持原来的顺序

编辑:问题解决了!感谢Plalx指出,当KeyA小于KeyB时,我返回了0,而我本应该返回-1

排序方法将数组对象排序到位;没有新的数组对象 在执行期间创建。如果在 sortFunction参数,它必须返回以下值之一:

  • 如果传递的第一个参数小于第二个参数,则为负值。
  • 如果两个参数相等,则为零。
  • 如果第一个参数大于第二个参数,则为正值。
取自


?这可能不是您的问题,但是您不应该使用
for in
构造在数组上循环。请参阅是否可能阵列正在排序,但重新插入代码不起作用?也许排序后的断点是一个好主意,可以查看数组是否已被排序Hanks,就是这样。我需要将“return”行改为return1或-1,而不是0。
['b', 'a'].sort(function (a, b) { return a > b? 1 : (b > a? -1 : 0) }); //a, b