首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我单击子div时,如何关闭父div函数,当我再次单击父div时,该函数将处于活动状态

要实现这个功能,你可以使用JavaScript来监听点击事件,并根据点击的目标元素来决定是否关闭或激活父div的函数。以下是一个简单的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Toggle Parent Div</title>
<style>
  .parent {
    width: 200px;
    height: 200px;
    background-color: lightblue;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .child {
    width: 100px;
    height: 100px;
    background-color: lightcoral;
    cursor: pointer;
  }
</style>
</head>
<body>

<div class="parent" id="parentDiv">
  <div class="child" id="childDiv"></div>
</div>

<script>
  // 获取父div和子div的DOM元素
  const parentDiv = document.getElementById('parentDiv');
  const childDiv = document.getElementById('childDiv');

  // 定义一个变量来跟踪父div的状态
  let isParentActive = true;

  // 为父div和子div添加点击事件监听器
  parentDiv.addEventListener('click', function(event) {
    // 阻止事件冒泡到子div
    event.stopPropagation();
    // 切换父div的状态
    isParentActive = !isParentActive;
    console.log('Parent Div Status:', isParentActive ? 'Active' : 'Inactive');
    // 根据状态执行相应的函数
    if (isParentActive) {
      activateParentDiv();
    } else {
      deactivateParentDiv();
    }
  });

  childDiv.addEventListener('click', function(event) {
    // 阻止事件冒泡到父div
    event.stopPropagation();
    // 关闭父div的函数
    isParentActive = false;
    console.log('Parent Div Status:', isParentActive ? 'Active' : 'Inactive');
    deactivateParentDiv();
  });

  // 定义父div激活时的函数
  function activateParentDiv() {
    parentDiv.style.backgroundColor = 'lightgreen';
    // 这里可以添加更多的激活逻辑
  }

  // 定义父div关闭时的函数
  function deactivateParentDiv() {
    parentDiv.style.backgroundColor = 'lightblue';
    // 这里可以添加更多的关闭逻辑
  }
</script>

</body>
</html>

在这个示例中,我们有两个div元素,一个父div和一个子div。我们为这两个元素都添加了点击事件监听器。当点击子div时,会调用deactivateParentDiv函数来关闭父div的功能。当点击父div时,会根据当前的状态来决定是激活还是关闭父div的功能。

关键点在于使用event.stopPropagation()来阻止事件冒泡,这样点击子div时不会触发父div的点击事件。同时,我们使用了一个变量isParentActive来跟踪父div的状态,并根据这个状态来执行相应的函数。

参考链接:

这个方法可以扩展到更复杂的场景,只需要根据实际需求调整事件处理逻辑和状态管理即可。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券