2017-08-31 6 views
0

にクローニングしながら、どのように私はこのコードjQueryの

$('.cloneMe').on('click', function(e) { 
    var idToAppend = $(this).data('id'); 
    $(this).data('id', idToAppend + 1); 
    $('div.render-form-editlayout-10').clone("").find('[id]').attr('id', function(idx, val) { 
     var newId = (this.name == undefined) ? val + idToAppend : this.name + '_' + idToAppend; 
     if ((this.name != undefined)) { 
      $(this).attr('name', newId); 
      console.log('For elements with name the new ID is: ' + 
       newId + ' new Name is: ' + newId); 
     } 
     return newId; 
    }).closest('div.render-form-editlayout-10').insertBefore(this); 
}) 

を持っており、私のjsfiddleは、あなたはそれが初めて正常に動作プラスボタンをクリックするとthis

である、しかし、最初に選択します次回は複数のクローンを作成しています。他のロジックを変更せずに修正できますか?

おかげ

+1

私は '+'を押すたびにクローン1を返します。 –

+0

このすべてのデータIDはどういう意味ですか?前回のフィドルで間違ったクローニングを修正しましたが、私の答えを提出する前に、新しいものに変更しました。 – hallleron

+0

@hallleronそれは間違ったフィドルソリでした。 – Vikram

答えて

0

問題は、この行です:$('div.render-form-editlayout-10').clone("")

あなたが最初に選ぶしたい場合は、firstメソッドを使用します。私はあなたのjsfiddleを更新$('div.render-form-editlayout-10').first().clone("")

を。しかし、あなたのjsfiddleの問題は、使用されたセレクタでした。私もそれを修正した。元のコードに同じ問題があるかどうかはわかりません。

+0

どうすればいいですか? f-row以外のすべての行を最初にクローンします。見出しも同様に複製されています。また、クラスを動的にしようとしています。たとえば、 'render-form-editlayout-10'のようにdata-ボタンの – Vikram

+0

申し訳ありません誤ったフィドル、その1つは正しくありません – Vikram

+0

私はフィドル – Vikram

0

チェックこのフィドル:https://jsfiddle.net/56sfx5ur/15/

私はjsの次の行の更新:

var new_form = $('.form-model').children().first().clone(true); 

を問題は、あなたが最初のフォームフィールドの1セットしか含まれているが、第2の容器全体をクローン化したということでしたクローンには2つのフォームフィールドセットが含まれているので、クローンは4つのフォームセットなどを得ました。

+0

を更新しました申し訳ありませんが間違ったフィドルを更新しました – Vikram