2016-10-27 9 views
0

私はそうのようにマークアップしている:クリックで重複入力、前にクリックされた要素を挿入 - jQueryの

$('label.duplicate').click(function(e) { 
 
     e.preventDefault(); 
 
     var _for = $(this).attr('for'); 
 
    
 
     $('input[name="' + _for + '"]').clone().insertBefore($(this)); 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="input_one[]"> 
 
    <label class="duplicate" for="input_one[]">Add another car</label>

これは、複製、またはエラーを提供していないので、私は理由を知りませんこれは動作していないのですか?

+0

その作業...すでに取り組ん – Mahi

+0

あなたのコードの良い – prasanth

+0

ええ、私は最後にそれを阻止いただきましたわからない - 私はそれがここで働いてご覧ください。 Bizzare。 –

答えて

1

動作していますが、コードを実行する前にdom-structurがロードされるのを待つ必要があります。以下のようにdocumet.readyの中にすべてを入れてください:

$(document).ready(function() { 
    $('label.duplicate').click(function(e) { 
    e.preventDefault(); 
    var _for = $(this).attr('for'); 

    $('input[name="' + _for + '"]').clone().insertBefore($(this)); 
    }); 
}) 

最後にコードを最後に挿入してください。ここではこれについての続きを読む:https://learn.jquery.com/using-jquery-core/document-ready/

+0

ええ、編集後、ここで作業しています。私はそれを準備した文書で動かす。 –

0
<input type="text" name="input_one[]"> 
<label class="duplicate" for="input_one[]">Add another car</label> 

だけ.duplicate複製するのに十分です:

$(function(){ 
$('.duplicate').click(function(e) { 
    e.preventDefault(); 
    var _for = $(this).attr('for'); 

    $('input[name="' + _for + '"]').clone().insertBefore($(this)); 
    }); 
} 
0

私はあなたがコードhereだし、正常に動作するように再現。 jQueryライブラリをインポートするスクリプトの後ろにjQueryコードがありますか? エラーが表示されますか?

+0

あなたが私の答えを下に読むと、何が欠けていたかが分かります。コードがあなたのために働いているのは、ページの最後にコードを挿入しているからです。それは、レンダリングされたDOMを意味します。しかし、あなたのスクリプトをヘッダーの別のファイル、つまりヘッダーに入れたら、最初にDOMのレンダリングを待つ必要があります。 document.readyを使用するとその問題が解決されます。 – Zorken17

関連する問題