为什么我的表排序器仅在某些列上起作用?

我有一个表排序器功能,该功能仅在某些列上有效,并且仅在单击任何内容时才对第一列进行正确排序。但是,如果我单击first和last,它将以一种难以理解的方式对表格进行排序。


我是JavaScript的新手,即使我能够解决一些问题,也无法使其正常工作100%。


这是我的小提琴:https : //jsfiddle.net/m_tibo/0t83no14/4/


这是我的功能:


// TABLESORTER

function accordionTable(i, elem) {

  var table = $(elem),

    tbody = table.find('tbody'),

    th_index = 0,

    th_sortType = "int";


  function mapTDs(i, elem) {

    var txt = $("td", elem).eq(th_index).text();

    $(elem).attr("data-sort", txt);

  }


  function sortAsc(a, b) {

    var aData = $(a).attr("data-sort"),

      bData = $(b).attr("data-sort");

    if (th_sortType == "string") {

      return +bData < +aData ? 1 : -1; // Integer

    } else {

      return bData < aData ? 1 : -1; // String or else

    }

  }


  //header sort

  table.on("click", "th", function() {

    th_sortType = $(this).data('sort');

    th_index = $(this).index();

    tbody = table.find('tbody').each(mapTDs);

    tbody.sort(sortAsc).detach().appendTo(table);

  });

}


$('table').each(accordionTable);

我从功能中期望的是对每列上的表进行升序和降序排序。非常感谢您的帮助。


海绵宝宝撒
浏览 183回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript