Dev*_*man 9 sorting ajax jquery tablesorter
我有一个表,我通过jQuery加载命令加载.在load函数的回调中,我启动了tablesorter插件.由于某种原因,该表仅对降序进行排序而不是升序.甚至更奇怪,如果我按住shift,它将在asc和desc之间正确切换?知道这里发生了什么吗?
table.php
<table id="xyz">
<thead>
<tr>
<th>hi</th>
</tr>
</thead>
<tbody>
<tr>
<td>a</td>
</tr>
<tr>
<td>b</td>
</tr>
<tr>
<td>c</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$("#myDiv").load("table.php", function() {
$("#xyz").tablesorter();
});
Run Code Online (Sandbox Code Playgroud)
如果我不通过ajax加载表,那么tablesorter按预期运行.
好的,所以我像Jason想的那样是双重约束力的.
我实际上是在一个类上调用jQuery的加载函数,我在页面上有两个div.所以它实际上是两次调用回调函数?
我认为这是一种奇怪的行为,因为加载到两个div中的内容是相同的,但看起来jQuery为每个div执行单独的ajax调用.感谢您的意见!
只是想我会在这里抛出另一个答案,万一其他人遇到这个问题.当我尝试.tablesorter()使用类选择器而不是id选择器调用表时发生这种情况.所以改变它
$('.tablesorter').tablesorter();
至
$('#tablesorter').tablesorter();
(以及反映这一点的标记)为我解决了这个问题.
再次,看看如何解决这个问题,我想分享我的不同场景.
我的表体行是通过.ajax调用动态创建的,一旦用户添加/修改/删除一行,那么表体行将通过.removed()相同的.ajax调用重新创建function().这当然是双重绑定tableorter,因为表头仍然存在,这导致奇怪的行为.
对我来说,修复是在初始化之前取消绑定tablesorter,$('#mytable').addClass('tablesorter').tablesorter();如下所示:
$('#mytable')
.unbind('appendCache applyWidgetId applyWidgets sorton update updateCell')
.removeClass('tablesorter')
.find('thead th')
.unbind('click mousedown')
.removeClass('header headerSortDown headerSortUp');
Run Code Online (Sandbox Code Playgroud)
另一个修复可能是在.ajax调用中创建整个表而不仅仅是正文<tr>.
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
5651 次 |
| 最近记录: |