使用jquery反转名字和姓氏

时间:2013-10-18 03:04:13

标签: javascript jquery

尝试取这个表并取名字,当我点击一个单选按钮时,它会改变名称,例如:Tom Hanks to Hanks,Tom。这是html:

<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>tomhanks@moviestars.com</td>
            </tr>
            <tr>
                <td>9002</td>
                <td class="name">Bruce Willis</td>
                <td>brucewillis@moviestars.com</td>
            </tr>
            <tr>
                <td>9003</td>
                <td class="name">Jim Carrey</td>
                <td>jimcarrey@moviestars.com</td>
            </tr>
            <tr>
                <td>9004</td>
                <td class="name">Tom Cruise</td>
                <td>tomcruise@moviestars.com</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();
            });
        });
    });
});

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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