当前位置:  开发笔记 > 编程语言 > 正文

JQuery在没有插件的情况下对表进行排序

如何解决《JQuery在没有插件的情况下对表进行排序》经验,为你挑选了1个好方法。

是否有一个jquery函数来排序表.我知道JQuery Tablesorter插件,但我想尽可能避免使用它.

作为一个FYI - 我有一个表头,其中包含自定义图像以表示升序和降序.数据类型几乎可以是任何类型.

编辑:我可以在Javascript中对表进行排序吗?



1> Aditya Ponks..:

这是非常有可能的.你可以这样做

function sortTable(table, col, reverse) {
    var tb = table.tBodies[0], // use `` to ignore `` and `` rows
        tr = Array.prototype.slice.call(tb.rows, 0), // put rows into array
        i;
    reverse = -((+reverse) || -1);
    tr = tr.sort(function (a, b) { // sort rows
        return reverse // `-1 *` if want opposite order
            * (a.cells[col].textContent.trim() // using `.textContent.trim()` for test
                .localeCompare(b.cells[col].textContent.trim())
               );
    });
    for(i = 0; i < tr.length; ++i) tb.appendChild(tr[i]); // append each row in order
}

function makeSortable(table) {
    var th = table.tHead, i;
    th && (th = th.rows[0]) && (th = th.cells);
    if (th) i = th.length;
    else return; // if no `` then do nothing
    while (--i >= 0) (function (i) {
        var dir = 1;
        th[i].addEventListener('click', function () {sortTable(table, i, (dir = 1 - dir))});
    }(i));
}

function makeAllSortable(parent) {
    parent = parent || document.body;
    var t = parent.getElementsByTagName('table'), i = t.length;
    while (--i >= 0) makeSortable(t[i]);
}

window.onload = function () {makeAllSortable();};

看看这个小提琴

(我不是上面代码的作者或者那个小提琴,我只是在搜索解决方案时找到它.)

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有