我在使用jquery对表中的tds进行排序时遇到了问题。
我的演示fiddle
我如何在我的项目中为任何有id的表调用它?
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;
}
});
发布于 2014-04-07 16:17:26
我认为您错过了对表进行排序的最后一个“重置”函数。desc代码将不起作用,因为必须切换顺序。
代码:
$('.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();
});
更新
一般来说,你的函数可以是:
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')
发布于 2017-06-21 15:37:22
这将通过使用jquery和带搜索过滤器的bootstrap来完成,只需使用id调用jquery即可。例如,我使用了id #示例,您可以使用它作为表的id,并包含jquery和datatable jquery。
$(document).ready(function() {
$('#example').DataTable();
} );
发布于 2014-12-30 03:56:44
这里是来自Adeneo的答案的修改版本。这将根据指定列中的文本对表进行排序,而不仅仅是第一列。这也将在第二列中查找单词"Name“,并确保该行位于顶部(标题行)。
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);}
https://stackoverflow.com/questions/22906760
复制相似问题