2013-10-18 48 views
0

试着拿这张表取名字,当我点击一个单选按钮时,它将名字从如汤姆汉克斯(Tom Hanks)改为汤姆汉克斯(Hanks)。这里是html:使用jquery颠倒姓氏和名字

<h1>Address Book</h1> 

Show Names as: 
<input name="change_last_first" value="last" type="radio">First, Last 
<input name="change_last_first" value="first" type="radio">Last, First 
<div> 
    <table <thead=""> 
     <tbody> 
      <tr> 
       <th>ID</th> 
       <th>Name</th> 
       <th>Email</th> 
      </tr> 
     </tbod 
     <tbody> 
      <tr> 
       <td>9001</td> 
       <td class="name">Tom Hanks</td> 
       <td>[email protected]</td> 
      </tr> 
      <tr> 
       <td>9002</td> 
       <td class="name">Bruce Willis</td> 
       <td>[email protected]</td> 
      </tr> 
      <tr> 
       <td>9003</td> 
       <td class="name">Jim Carrey</td> 
       <td>[email protected]</td> 
      </tr> 
      <tr> 
       <td>9004</td> 
       <td class="name">Tom Cruise</td> 
       <td>[email protected]</td> 
      </tr> 
      <script> 

      </script> 
     </tbody> 
    </table> 
</div> 
<meta charset="utf-8"> 
<title>Interview Test</title> 
<link rel="stylesheet" href="./webassets/style.css" media="screen" type="text/css"> 
    <h1>Company Staff List</h1> 

<div> 
    <table> 
     <thead> 
      <tr> 
       <th>ID</th> 
       <th>Name</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>9001</td> 
       <td>Tom Hanks</td> 
      </tr> 
      <tr> 
       <td>9002</td> 
       <td>Bruce Willis</td> 
      </tr> 
      <tr> 
       <td>9003</td> 
       <td>Jim Carrey</td> 
      </tr> 
      <tr> 
       <td>9004</td> 
       <td>Tom Cruise</td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

这里是jquery,它的所有我可以拿出来,根本不工作。 :(

$(document).ready(function() { 
    $("input[name='change_last_first']").click(function() { 
     $(".name").text(function() { 
      $(this).split(" ").reverse(); 
      }); 
     }); 
    }); 
}); 
+0

更新了答案用2个选项。查看演示。 – PSL

回答

2

您需要return结果。此外,由于您使用的text功能ARG语法使用函数的第二个参数当前文本。

$(".name").text(function(_, cur) { 
     return curText.split(/\s+|,/).reverse(); 
    }); 

Fiddle

假设通用名称格式为First LastLast, First

$("input[name='change_last_first']").change(function() { 
     var arr = [" ", ","], 
      sep = this.value === 'first' ? 0 : 1; 
     $(".name").text(function (_, curText) { 
      return curText.split(arr[sep % 2]).reverse().join(arr[(sep + 1) % 2]); 
     }); 
    }); 

Demo

+0

我对如何将姓名从 汤姆汉克斯改名为汉克斯,汤姆并向后改了一个小小的要求。 –

+0

@thetao这是第二个演示会给你的东西。 – PSL

+0

@thetao这是排列组合的第三个选项:)...试试这个链接。 http://jsfiddle.net/b5bj9/ – PSL

0

为此,您需要split全名空间和比你可以使用reverse()

注:,因为reverse()是一个数组实例的方法。它不会直接在字符串上工作。您应该首先将字符串的字符拆分为数组,然后颠倒数组,然后再回到字符串中。

$("input[name='change_last_first']").click(function() { 
     $(".name").each(function() {    
      var revName = $(this).text().split(" ").reverse().join(" "); 
      $(this).text(revName); 
     }); 
}); 

Try This