排序html表列客户端没有第三方以外的jquery
Sorting html table columns client side without third party other than jquery
我通过jQuery ajax调用web api服务获取数据。我不想发送请求,让服务器端按asc/desc按每列排序所以我想做的是客户端HTML表排序
我在整个项目中一直使用jQuery和Javascript,但我真的更喜欢不使用第三方工具,如jqgrid或datatable.net
我有什么选择?
在数据被输出到html表格行之前,我已经在Javascript中保存了数据因此,有一个click事件选项可以对。each循环中的数据进行排序
jQuery Javascript/function writeResponses(allData) {
var strResult = "<table id='headerTable' class='table'><thead id='headers'><th>ID</th><th>Location</th><th>Comment</th><th>Additional Information</th><th>Date Reported</th><th>TC Key</th>";
strResult += "<th>Loc Acct Num</th><th>TC Date</th><th>WorkedID</th><th>TC Type</th><th>Corrected TC Type</th></thead>";
$.each(allData, function (index, issues) {
strResult += "<tr><td>" + issues.DOCCCOIssuesId + "</td><td> " + issues.Location + "</td><td>" + issues.Comment + "</td>";
strResult += "<td>" + issues.AdditionalInformation + "</td><td>" + issues.DateReported + "</td><td>" + issues.TCKey + "</td>";
strResult += "<td>" + issues.LocAcctNum + "</td><td>" + issues.TCDate + "</td><td>" + issues.WorkedByNTID + "</td>";
strResult += "<td>"+issues.TCType+"</td><td>"+issues.CorrectedTCType+"</td></tr>";
});
strResult += "</table>";
$("#divResult").html(strResult);
}
生成的html表
<table id="headerTable" class="table">
<thead id="headers">
<tr>
<th>ID</th><th>Location</th><th>Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>CCO</td>
<td>Compliment</td>
</tr>
<tr>
<td>2</td>
<td>afafd</td>
<td>oafaf</td>
</tr>
</tbody>
您可以在收到数据时对其进行初始排序。allData似乎是一个数组,所以你可以这样做:
allData.sort(function(a, b){
if(a.DOCCCOIssuesId < b.DOCCCOIssuesId ) return -1;
if(a.DOCCCOIssuesId > b.DOCCCOIssuesId ) return 1;
// other sort keys?
return 0;
});
如果你想要有可点击的排序列,下面的例子可能会有帮助:
jQuery("table.stats").each(function() {
var $ = jQuery;
var tbl = $(this);
$('th', this).click(function() {
var clickRow = $(this).closest('tr');
var body = $(this).closest('tbody').get(0);
var col = $(this).index();
var sortKeys = $(body).find('tr').not(clickRow).map(function(idx, row) {
return {
row: row,
key: $('td', row).eq(col).text() // you can do all sorts of things besides simple text values. cache the key for efficiency
};
}).get();
sortKeys.sort(function(a, b) {
return a.key > b.key ? 1 : a.key < b.key ? -1 : 0;
});
for (var i = sortKeys.length - 1; i >= 0; i--) {
body.appendChild(sortKeys[i].row);
}
});
});
相关文章:
- 使用jquery cookie的第三方cookie
- 开发第三方小部件-Angular vs jQuery vs普通的旧JS
- 更改第三方组件的 jQuery 命名空间
- 如何使用打字稿编译包含不同库(例如jquery,jquery-ui,其他第三方库)的文件
- Jquery 执行函数 第三方函数结束后
- 在第三方 ajax 之后保持 jquery 脚本的活动
- 阻止第三方JavaScript插入jQuery
- jQuery或其他第三方库是否应该与逻辑代码捆绑在一起
- jQuery弹出窗口而不使用第三方jQuery库
- iOS 8第三方键盘don't注册javascript/jQuery keyup、keypress、keydow
- 如何使用Javascript/JQuery从第三方网站加载XML
- 在android上,jQuery插件中使用的第三方库的ReferenceError
- 排序html表列客户端没有第三方以外的jquery
- 向第三方页面添加jQuery失败
- 计算类的实例——使用Firebug将jQuery注入第三方网站
- 在第三方窗口(原型)中执行jQuery
- jQuery:在等待窗口加载时忽略第三方内容
- 如何使用jquery noConflict而不改变第三方库
- 添加一个动画过渡到第三方jquery插件- Dropit
- 向requireJS添加第三方jQuery插件的最佳实践