2016-07-06 3 views
0

<tr>을 동적으로 추가하는 스크립트가 있는데, DOM에 아직로드되지 않았기 때문에 jQuery에 포함 된 요소가 인식되지 않는 것 같습니다.DOM에없는 요소에 이벤트 바인딩

.on 기능을 사용하려고 시도했지만 작동하지 않습니다.

아이디어가 있으십니까?

$(document).ready(function(){ 
    $("#add_item").click(function(e){ 
    e.preventDefault(); 
    var nbeTr = $(".tablerow").length; 
    if (nbeTr < 10){ 
     $(".tablerow:last").after("<tr class='filleul'><td></td><td></td><td></td><td><button class='newtr'>X</button></td></tr>"); 
    } 
    }); 
    $(document).on("click", ".newtr", function(event) { 
    event.preventDefault(); 
    alert("Yo"); 
    }); 
}); 
+2

HTML을 공유하십시오. –

+0

바이올린 예제 https://jsfiddle.net/z7wk5j1b/ – DaniP

+0

나는 바이올린을 기반으로 만들었습니다 ... Jquery에 잘못된 버전을 사용하고 있기 때문에 작동하지 않는다고 생각합니다. 이전 바이올린에서 v1.6을 사용하면 ' t 작업하지만 1.7보다 높은 코드는 작동합니다. https://jsfiddle.net/z7wk5j1b/1/ – DaniP

답변

0

버튼 요소를 만들 때 이벤트 수신기를 등록해야합니다. 지금은 정의되지 않은 요소에 클릭 이벤트를 등록하려고합니다.

// create button 
$ele = $("<button class='newtr'>X</button>"); 
// bind event listener to button 
$ele.on("click", function() { alert("hello"); }); 
// insert $ele into DOM 
$target.append($ele); 
0

안녕하세요 벅 코드가 작동하고 있습니다. 제 생각에 문제는 다른 부분입니다.

이 작업 예를 참조하십시오 :

$(document).ready(function() { 
 
    $("#add_item").click(function(e) { 
 
    e.preventDefault(); 
 
    var nbeTr = $(".tablerow").length; 
 
    if (nbeTr < 10) { 
 
     $(".tablerow:last").after("<tr class='tablerow filleul'><td>1</td><td>2</td><td>3</td><td><button class='newtr'>X</button></td></tr>"); 
 
    } 
 
    }); 
 
    $(document).on("click", ".newtr", function(event) { 
 
    event.preventDefault(); 
 
    alert("Yo"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<button id='add_item'>Add item</button> 
 
<table> 
 
    <tr class='tablerow'> 
 
    <td>c1</td> 
 
    <td>c2</td> 
 
    <td>c3</td> 
 
    <td> 
 
     <button class='newtr'>X</button> 
 
    </td> 
 
    </tr> 
 
    <table>

+0

아래로 투표하는 이유가 무엇입니까? –

+0

downvote하지 않았지만,이 대답은 새로운 질문을 제공하지 않습니다. 이 코드가 OP 코드에서 작동하지 않는 이유에 대해 전혀 대답하지 않습니다 ... 실제 코드가 작동한다는 것을 알 수 있으므로 주석에 대한 설명을 요청할 수 있습니다. – DaniP

+0

예, jQuery의 나쁜 버전이 사용 중이며 잘못된 새로 고침 (캐시 일 가능성이 있습니까?) 이제 작동 중입니다! – Buck

0

확인, 문제는 사용 된 jQuery를 나쁜 버전이었다.

그냥 마지막 jQuery 버전의 CDN을 사용하고 캐시를 새로 고쳐 작동 중입니다.

관련 문제