Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JQuery按姓氏/姓氏对表进行排序_Jquery - Fatal编程技术网

使用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;
        }) );
    });