JQuery .clone()和.appendTo()导致多个追加

时间:2016-03-19 15:57:09

标签: javascript jquery clone appendto

所以我读过很多类似的问题和答案 - 似乎都没有解决这个具体问题。所以这里。

请考虑以下代码:

<body>
<script>

    function addAttendee() {
        $('.newAttendee').clone().appendTo('.attendees');
    }

</script>

<form action="test2.php" name="testform" method="post">
    <span class="attendees">
    <input type="text" name="attendee[0][city]" value="city 1">
    <input type="text" name="attendee[0][state]" value="state 1">
    <input type="text" name="attendee[0][zip]" value="zip 1">
    </span>
<a href="#" name="addAttendee" onclick="addAttendee()">Add Attendee</a>
<br>
<input type="submit" onclick="getOutput()">
</form>

<div class="hideThis" style="display: none;">
    <span class="newAttendee">
        <br>
    <input type="text" name="attendee[1][city]" value="city 2">
    <input type="text" name="attendee[1][state]" value="state 2">
    <input type="text" name="attendee[1][zip]" value="zip 2">
    </span>
</div>

当我点击&#34;添加参加者&#34;第一次,我得到了我想要的东西。但是,每次后续单击该链接会导致插入先前插入的部分的两倍。首先单击1,第二个,第三个,等等

我错过了什么吗?

提前感谢所有人。

2 个答案:

答案 0 :(得分:4)

因为$('.newAttendee').clone()将使用该类克隆所有元素

尝试使用first()last()仅克隆其中一个

$('.newAttendee').first().clone().appendTo('.attendees');

答案 1 :(得分:0)

这是因为$('.newAttendee')选择了类newAttendee的所有元素。 克隆后你有2个,依此类推。 克隆后更改类将避免这种情况。