2017-12-05 5 views
1

私は "div"とその中のすべてをクローンしようとしていますが、クローンされたdivでイベントの1つが消えてしまいます。 SOで見つかったコード)。jqueryクローンとイベントを追加する

var MyClass = document.querySelectorAll(".BtnOptList"); 
for (var ii = 0; ii < MyClass.length; ii++) { 
    MyClass[ii].addEventListener('click', H_S_Btns_Func, false); 
} 

はその後、div要素のクローンを作成するために、私は次の関数を使用します:
不足しているイベントには、次のJavaScriptで追加され

$('#btnAddFlds').click(function() { 
    //Count "cloned divs" we currently have 
    //This will be also used as numeric ID of the new input(s) field(s) (1st have no number) 
    var DivNum = $('.SDetails').length; 
    // clone() element and update its id(s) 
    var newElem2 = $('.SDetails:first').clone().attr('id', function(i, val) { 
                  return val + DivNum; 
                  }); 
    // manipulate the id values of the input inside the new element 
    newElem2.find('input,.BtnOptList,.HideIt').each(function(){ 
             $(this).attr('id', function(i, val) { 
                  return val + '_' + DivNum; 
                  }); 
             }); 
    //Try to add function (DOESN'T WORK) 
    newElem2.find('.BtnOptList').each().addEventListener('click', H_S_Divs_Func, false); 

    //I omitted other stuff 
}); 

私はすでに試したクローン(真、真)しかし、動作しません

+0

使用イベント委任 '$(parentStaticElement).on' – Satpal

+0

'(、H_S_Divs_Func '.BtnOptList'、 'クリック')と、イベントハンドラをバインドする')( '.onを使用newElem2 .find( '.BtnOptList')。on( 'click'、H_S_Divs_Func); ' – Satpal

+0

@Satpalありがとうございましたが、私は新しいと言っています...あなたは私をより良く説明できますか? – genespos

答えて

1

これは(newElem2.find('.BtnOptList').each().addEventListener('click', H_S_Divs_Func, false);)どのようにjQueryのeachを使用していません。 newElem2.find('.BtnOptList').each(function(i,e){e.addEventListener('click', H_S_Divs_Func, false)})

PS:あなたはjQueryのを使用しているので、あなたはそれが自分のイベントメソッドだ使用し、全体のリストにリスナーを追加することができます。

newElem2.find('.BtnOptList').on('click', H_S_Divs_Func, false)

+0

あなたが提案したjQueryの方法は機能しません。なぜなら、関数はjavascript変数に入っているからでしょうか?しかし、最初のコードはOKです。ありがとう;) – genespos

関連する問題