2017-12-05 5 views
1

"div"와 그 안의 모든 것을 복제하려하지만 이벤트 중 하나가 복제 된 div에서 사라집니다 (웹 개발에 익숙하지 않은 것 같습니다 ...) "복제"되었습니다. SO에서 찾은 코드).jquery clone 및 이벤트 추가

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

그런 다음, 사업부를 복제, 나는 다음과 같은 기능을 사용합니다 :
누락 된 이벤트는 다음과 같은 자바 스크립트로 추가

$('#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) CSTE 연구진은' – Satpal

+0

'(H_S_Divs_Func '.BtnOptList', '클릭')와 이벤트 처리기를 바인딩') ('CSTE 연구진를 사용 newElem2 .find ('.BtnOptList'). on ('클릭', H_S_Divs_Func); ' – Satpal

+0

@Satpal 고마워,하지만 내가 새라고 했어. 내가 더 잘 설명해 줄 수있어? – genespos

답변

1

이 (newElem2.find('.BtnOptList').each().addEventListener('click', H_S_Divs_Func, false);)은 jQuery의 each을 사용하는 방식이 아닙니다. https://api.jquery.com/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에 들어 있기 때문일까요? 하지만 첫 번째 코드는 괜찮습니다. 감사 ;) – genespos