JS 코드에서 생성 된 요소를 클릭하여 요소를 Show-Hide
으로 만들고 싶습니다. 그러나 어떤 이유로 getElementById
및 getElementsByClassName
은 이러한 HTML 요소를 선택하지 못합니다. 여기 JavaScript/JQuery에서 생성 된 요소를 감지/선택하는 방법은 무엇입니까?
var code = '<p class="click-me">Click Me!</p>';
$('#container').append(code);
:
<div id="toShow">Hello World!</div>
<div id="container"></div>
컨테이너 div
에 <p>
(보기 숨기기하는 데 사용됩니다) 요소와 appending
만들기 : (http://jsfiddle.net/vy09nnco/ 데모를 확인하시기 바랍니다)
$(document).ready(function() {
var code = '<p class="click-me">Click Me!</p>';
var divToShow = document.getElementById('toShow');
var clickMeDiv = document.getElementsByClassName('click-me'); // Here is the problem
var isOpenedClass = 'isOpened';
var formIsClosed = true;
$(clickMeDiv).click(function() {
$(divToShow).toggleClass(isOpenedClass);
formIsClosed = false;
});
$(clickMeDiv).click(function() {
if (formIsClosed) {
$(divToShow).removeClass(isOpenedClass);
}
formIsClosed = true;
})
$('#container').append(code);
});
: 여기
는 전체 JQuery와 코드
Show-Hide에 다른 요소를 사용하면 잘 작동합니다 (예 : http://jsfiddle.net/vy09nnco/1/). 그 이유는 생성 된 코드를 선택해야 문제가 발생하기 때문입니다.
도움 주셔서 감사합니다.
요소는 문서에 없지만 [여기] (http://jsfiddle.net/vy09nnco/3/)의 차이점을 참조하십시오. – Wilmer
innerhtml 대신 DOM 개체를 사용하여 새 요소를 만드는 경우 요소에 대한 직접적인 참조를 가지며 이벤트 리스너를 직접 연결할 수 있습니다. – Jasen
개체가 DOM에 존재하기 전에 수신기를 추가하려고합니다. 먼저 추가하거나 추가 콜백에 수신기를 만듭니다. –