我有下表,并希望在页面加载后根据<th>
位置属性值用jquery对表列进行重新排序。
我查看了以下解决方案,但无法解决我的问题:
<table>
<head>
<tr>
<th position = "3">Email</th>
<th position = "1">Name</th>
<th position = "2">Phone</th>
</tr>
</head>
<tbody>
<tr>
<td>Ali@gmail.com</td>
<td>Hamid</td>
<td>0776567432</td>
</tr>
</tbody>
</table>
答案 0 :(得分:2)
使用<th>
索引作为键从位置属性创建对象。
然后在sort()
回调中使用该对象来查找每个元素的新顺序
const colOrder = {}
$('thead th').each(function(i){
colOrder[i] = parseInt( $(this).attr('position') );
});
$('tr').html(function(i){
return $(this).children().sort(function(a,b){
const aOrder = colOrder[$(a).index()],
bOrder = colOrder[$(b).index()];
return aOrder - bOrder;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th position = "3">Email</th>
<th position = "1">Name</th>
<th position = "2">Phone</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ali@gmail.com</td>
<td>Hamid</td>
<td>0776567432</td>
</tr>
</tbody>
</table>