Yêu cầu thg 9 9, 2022 4:06 SA 158 0 3
  • 158 0 3
0

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

Chia sẻ
  • 158 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 CÂU TRẢ LỜI


Đã trả lời thg 9 9, 2022 4:24 SA
Đã được chấp nhận
+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>
Chia sẻ
Đã trả lời thg 9 9, 2022 5:10 SA
+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")
     });
Chia sẻ
Avatar TMH @hoang55dd
thg 9 18, 2022 10:47 SA

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

Avatar Quiet @simple1805
thg 9 19, 2022 1:53 SA

@hoang55dd You are welcome 😉

Đã trả lời thg 9 23, 2022 4:36 SA
+1

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

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí