使用JQuery按姓氏/姓氏对表进行排序
下面是我的桌子使用JQuery按姓氏/姓氏对表进行排序,jquery,Jquery,下面是我的桌子 <table id="sorting"> <tbody> <tr> <td>Ann Smith</td> <td>Ball Clever</td> <td>Cat Work</td> <td>Deer Run</td> </tr> </tb
<table id="sorting">
<tbody>
<tr>
<td>Ann Smith</td>
<td>Ball Clever</td>
<td>Cat Work</td>
<td>Deer Run</td>
</tr>
</tbody>
</table>
安·史密斯
球聪明
猫的工作
鹿跑
我希望对lastname/second name应用排序,并按如下方式显示输出:
<table id="sorting">
<tbody>
<tr>
<td>Ball Clever</td>
<td>Deer Run</td>
<td>Ann Smith</td>
<td>Cat Work</td>
</tr>
</tbody>
</table>
球聪明
鹿跑
安·史密斯
猫的工作
任何建议。我希望使用JQuery来实现这一点。我假设您的意思是每个单元格都是它自己的行,而不是尝试对行进行排序,在这种情况下,我建议使用自定义的
文本提取
函数,类似于:$(x).text().split(“”).reverse()
$items.sort(函数(a,b){
if($(a).html().split('')[1]<$(b.html().split('')[1])返回-1;
if($(a).html().split(“”)[1]>$(b).html().split(“”)[1])返回1;
返回0;
});
功能比较(a、b){
控制台日志(a)
var splitA=a.innerHTML.split(“”);
var splitB=b.innerHTML.split(“”);
var lastA=splitA[splitA.length-1];
var lastB=splitB[splitB.length-1];
if(lastAlastB)返回1;
返回0;
}
变量名称=$('td');
var sorted=names.sort(比较);
$('#sorting tr').html(已排序)
安·史密斯
球聪明
猫的工作
鹿跑
您可以在td
元素的jQuery集合上使用sort()
JS方法,然后使用.html()
将排序后的单元格添加到其父tr
元素中
$('#sorting tbody tr').each(function() {
$(this).html( $(this).find('td').sort(function(a,b) {
return $(a).text().split(' ')[1] < $(b).text().split(' ')[1] ? -1 :
$(a).text().split(' ')[1] > $(b).text().split(' ')[1] ? 1 : 0;
}) );
});
$('#排序tbody tr')。每个(函数(){
$(this.html($(this.find('td')).sort(函数a,b){
返回$(a).text().split(“”)[1]<$(b).text().split(“”)[1]?-1:
$(a).text().split(“”)[1]>$(b).text().split(“”)[1]?1:0;
}) );
});
若您真的希望每个单元格都位于自己的行中,那个么稍微修改一下代码就可以使用正确的HTML
$('#排序tbody tr')。每个(函数(){
$(this.html($(this.find('td')).sort(函数a,b){
返回$(a).text().split(“”)[1]<$(b).text().split(“”)[1]?-1:
$(a).text().split(“”)[1]>$(b).text().split(“”)[1]?1:0;
}) );
});代码>
安·史密斯
球聪明
猫的工作
鹿跑
您有代码吗?您可能尝试过的一个?您需要向我们展示您尝试了什么。是否使用此帐户进行分页,因为如果是这样,则您不想使用前端进行排序。您好,这不起作用,因为排序函数不能用于非数组对象。我的html看起来像安·史密斯(Ann Smith)聪明的球 猫的工作 鹿跑
$('#sorting tbody tr').each(function() {
$(this).html( $(this).find('td').sort(function(a,b) {
return $(a).text().split(' ')[1] < $(b).text().split(' ')[1] ? -1 :
$(a).text().split(' ')[1] > $(b).text().split(' ')[1] ? 1 : 0;
}) );
});