首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Jquery排序表数据

Jquery排序表数据
EN

Stack Overflow用户
提问于 2014-04-07 16:04:11
回答 5查看 54.9K关注 0票数 29

我在使用jquery对表中的tds进行排序时遇到了问题。

我的演示fiddle

我如何在我的项目中为任何有id的表调用它?

代码语言:javascript
复制
var $sort = this;
var $table = $('#mytable');
var $rows = $('tbody > tr',$table);
$rows.sort(function(a, b) {
    var keyA = $('td:eq(0)',a).text();
    var keyB = $('td:eq(0)',b).text();
    if($($sort).hasClass('asc')) {
        return (keyA > keyB) ? 1 : 0;
    } else {
        return (keyA < keyB) ? 1 : 0;
    }
});
EN

回答 5

Stack Overflow用户

发布于 2014-04-07 16:17:26

我认为您错过了对表进行排序的最后一个“重置”函数。desc代码将不起作用,因为必须切换顺序。

代码:

代码语言:javascript
复制
$('.sort').click(function (e) {
    var $sort = this;
    var $table = $('#mytable');
    var $rows = $('tbody > tr', $table);
    $rows.sort(function (a, b) {
        var keyA = $('td', a).text();
        var keyB = $('td', b).text();
        if ($($sort).hasClass('asc')) {
            return (keyA > keyB) ? 1 : 0;
        } else {
            return (keyA > keyB) ? 0 : 1;
        }
    });
    $.each($rows, function (index, row) {
        $table.append(row);
    });
    e.preventDefault();
});

演示:http://jsfiddle.net/7wwvL/

更新

一般来说,你的函数可以是:

代码语言:javascript
复制
function sortTable($table,order){
    var $rows = $('tbody > tr', $table);
    $rows.sort(function (a, b) {
        var keyA = $('td', a).text();
        var keyB = $('td', b).text();
        if (order=='asc') {
            return (keyA > keyB) ? 1 : 0;
        } else {
            return (keyA > keyB) ? 0 : 1;
        }
    });
    $.each($rows, function (index, row) {
        $table.append(row);
    });
}

sortTable($('#mytable'),'asc')

演示:http://jsfiddle.net/d7Kbx/

票数 6
EN

Stack Overflow用户

发布于 2017-06-21 15:37:22

这将通过使用jquery和带搜索过滤器的bootstrap来完成,只需使用id调用jquery即可。例如,我使用了id #示例,您可以使用它作为表的id,并包含jquery和datatable jquery。

代码语言:javascript
复制
$(document).ready(function() {
$('#example').DataTable();
} );
票数 2
EN

Stack Overflow用户

发布于 2014-12-30 03:56:44

这里是来自Adeneo的答案的修改版本。这将根据指定列中的文本对表进行排序,而不仅仅是第一列。这也将在第二列中查找单词"Name“,并确保该行位于顶部(标题行)。

代码语言:javascript
复制
function SortTable(table, order, nr) {
var asc = order === 'asc',
    tbody = table.find('tbody');

tbody.find('tr').sort(function (a, b) {
    if ($('td:nth-child('+ nr +')', a).text() == "Name") return $('td:nth-child('+ nr +')', a).text();
    else if (asc) {
        return $('td:nth-child('+ nr +')', a).text().localeCompare($('td:nth-child('+ nr +')', b).text());
    } else {
        return $('td:nth-child('+ nr +')', b).text().localeCompare($('td:nth-child('+ nr +')', a).text());
    }
}).appendTo(tbody);}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22906760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档