Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ตรวจจับการคลิกภายใน/ภายนอกหลาย div - JavaScript

ใช้ Event Listener สำหรับ event 'click' ตรวจสอบว่า target อยู่ใน div ไหน

ตัวอย่างโค้ด

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
<body>
  <div class="divDemo">First Division</div>
  <div class="divDemo">Second Division</div>
</body>
<script>
  document.addEventListener('click', callEventFuncion);
  function callEventFuncion(event) {
    var div = document.querySelectorAll('.divDemo');
    var result = Array.apply(0, div).find((v) => v.contains(event.target));
    if (result) {
      console.log("Clicked INSIDE a DIV");
    } else {
      console.log("Clicked OUTSIDE all DIVs");
    }
  }
</script>
</html>

บันทึกเป็น index.html เปิดด้วย Live Server

ผลลัพธ์

คลิกใน div → "Clicked INSIDE a DIV"
คลิกนอก div → "Clicked OUTSIDE all DIVs"

ตรวจจับการคลิกภายใน/ภายนอกหลาย div - JavaScript

คำอธิบาย: event.target คือ element ที่ถูกคลิก contains() ตรวจสอบว่าเป็นลูกของ div ไหน Array.apply(0, div) แปลง NodeList เป็นอาร์เรย์

วิธีทันสมัย: ใช้ Array.from(div) หรือ [...div] แทน Array.apply