Bắt sự kiên đã có của class khi thêm 1 thẻ div mới bằng jquery
Cho em hỏi làm thế nào để gắn sự kiện đã có cho các phần tử mới được thêm vào viết bởi js
vd em có sự kiện onclick
$(".ex").onclick(function(){
...
});
Em thêm phần tử mới vào
$(".parent").append("<div class="ex"> Here </div>))
Nhưng nó không nhận được sự kiên Onclick();
Làm thế nào để khắc phục ạ?
3 ANSWERS
Khi bạn append một phần tử html nào vào thì trước khi append bạn hay gắn cho phần tử đó sự kiện onClick rồi mới append nó vào. Khi bạn để code như trên thì html được render ra lúc đó do chưa có phần tử nào có class là ex
nên khi bạn gọi $(".ex")
nó sẽ k tìm thấy phần tử nào mà gắn sự kiện onclick cả. Bạn có thể làm tương tự bên dưới code của mình.
<div id="h">Click</div>
<div id="container"></div>
<script>
let div = document.getElementById('h');
div.addEventListener("click", function() {
var newDiv = document.createElement("div");
newDiv.innerHTML = 'Hello World';
newDiv.addEventListener('click', function() {
console.log('Hello Console');
})
document.getElementById('container').appendChild(newDiv);
})
</script>
Bạn tìm hiểu từ khóa jquery event dynamic element
nha. Trường hợp của bạn thử dùng đoạn code mẫu như sau xem sao.
$(document).on('click', '.ex', function() {
console.log("Click event")
});
Tuyệt vời quá ! Em cảm ơn nhiều ạ.♥️♥️♥️
@hoang55dd You are welcome 😉