0

アンカー タグのクリック時にフィールドを含むフォームを複製しようとしています。正しく動作しない理由は、jQuery クリック イベントがイベント内にバインドされて$('body').on('click')いるためです (ちなみに、私が作業しなければならない他のコードのためにそこにある必要があります。また、奇妙なのは、値を入力するとテキスト フィールドの 1 つをクリックして [クローン] をクリックすると、ランダムな量の余分な要素が生成されます。

問題の例はここにあります: http://jsfiddle.net/MJrUF/1/

4

2 に答える 2

2

add-btnクリックごとに追加のクリックハンドラーを既存のものにバインドしていbodyます。おそらく、委任を使用する以下のようなものが必要なので、クローン機能を運ぶ新しいボタンについて心配する必要はありません。

$('body').on('click', '.add-btn', function (e) {
    // Other necessary code unrelated to this form is here

    e.preventDefault();
    var $wrapper = $(this).closest('.form-wrapper');
    var data = $wrapper.clone(true);
    $wrapper.after(data);
});

デモ: http://jsfiddle.net/MJrUF/2/

于 2013-10-17T16:23:30.167 に答える
0

次のように、別のアプローチで何かを試してみませんか。

http://jsfiddle.net/ZrW3h/

    $("button.clone").live("click", function(){
        $(this).parents(".clonedInput").clone()
            .appendTo("body")
            .attr("id", "clonedInput" +  cloneIndex)
            .find("*").each(function() {
                var id = this.id || "";
                var match = id.match(regex) || [];
                if (match.length == 3) {
                    this.id = match[1] + (cloneIndex);
                }
        });
        cloneIndex++;
    });
于 2013-10-17T16:25:14.217 に答える