javascript 在div外部单击后移除类

jei2mxaa  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(145)

我知道这是一个老问题,但我已经搜索了很多。我想删除类后,点击了类似的机构以外。这里是我的代码:

HTML

<div id="user-login-top">Enter</div>
   <div id="user-login-wrapper" class="">visible</div>

J查询

$(function () {
    $("#user-login-top").on("click", function () {
        $("#user-login-wrapper").addClass("wide");
    });
    $(document).on("click", function (e) {
        if ($(e.target).is("#user-login-wrapper") === false) {
            $("#user-login-wrapper").removeClass("wide");
        }
    });
});

这是小提琴Fiddle
感谢你的帮助!?
谢谢

o2gm4chl

o2gm4chl1#

这是因为事件的传播。
当您单击user-login-top时,第一个单击处理程序被触发,它添加类,然后由于事件传播,附加到文档的处理程序被触发,它满足if条件并删除类。
这里的一个可能的解决方案是使用event.stopPropagation()

$(function() {
  $("#user-login-top").on("click", function(e) {
    $("#user-login-wrapper").addClass("wide");
    e.stopPropagation()
  });
  $(document).on("click", function(e) {
    if ($(e.target).is("#user-login-wrapper") === false) {
      $("#user-login-wrapper").removeClass("wide");
    }
  });
});
#user-login-wrapper {
  opacity: 0;
}
#user-login-wrapper.wide {
  opacity: 1 !important;
}
<div id="user-login-top">ورود</div>
<div id="user-login-wrapper" class="">visible</div>

另一个是
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个

nx7onnlm

nx7onnlm2#

<section>
  <div class="click-text">
    click inside and outside me
  </div>
</section>

const concernedElement = document.querySelector(".click-text");
document.addEventListener("mousedown", (event) => {
  if (concernedElement.contains(event.target)) {
    console.log("Clicked Inside");
  } else {
    console.log("Clicked Outside / Elsewhere");
  }
});

相关问题