Asked Sep 9th, 2022 4:06 a.m. 148 0 3
  • 148 0 3
0

Bắt sự kiên đã có của class khi thêm 1 thẻ div mới bằng jquery

Share
  • 148 0 3

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


Answered Sep 9th, 2022 4:24 a.m.
Accepted
+2

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>
Share
Answered Sep 9th, 2022 5:10 a.m.
+1

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")
     });
Share
Avatar TMH @hoang55dd
Sep 18th, 2022 10:47 a.m.

Tuyệt vời quá ! Em cảm ơn nhiều ạ.♥️♥️♥️

0
| Reply
Share
Avatar Quiet @simple1805
Sep 19th, 2022 1:53 a.m.

@hoang55dd You are welcome 😉

0
| Reply
Share
Answered Sep 23rd, 2022 4:36 a.m.
+1

Đối với jQuery bác có thể dùng Delegate hoặc On https://api.jquery.com/delegate/

Share
Viblo
Let's register a Viblo Account to get more interesting posts.