我想通過點擊從JS代碼創建的元素來創建元素Show-Hide
。但由於某些原因,getElementById
和getElementsByClassName
無法選擇這些HTML元素。 (請在演示:http://jsfiddle.net/vy09nnco/)如何檢測/選擇從JavaScript/JQuery創建的元素?
下面是HTML代碼:
<div id="toShow">Hello World!</div>
<div id="container"></div>
創建<p>
元素(這將被用來顯示隱藏)和appending
到容器div
:
var code = '<p class="click-me">Click Me!</p>';
$('#container').append(code);
下面是完整的jQuery代碼:
$(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);
});
當我使用另一個元素來顯示隱藏時,它運行良好(例如:http://jsfiddle.net/vy09nnco/1/),這就是爲什麼它只是通過選擇創建的代碼。
感謝您的任何幫助。
該元素還沒有在文檔中看到區別[here](http://jsfiddle.net/vy09nnco/3/)。 – Wilmer
如果使用DOM對象而不是innerhtml來創建新元素,則可以直接引用元素,然後直接附加事件偵聽器。 – Jasen
您正在嘗試在DOM中存在對象之前添加偵聽器,只需將其追加,或者在append回調中創建偵聽器。 –