即使单击具有stopPropagation的元素,也可以隐藏所有单击事件的元素

第一军团

我有一个元素,在页面上的任意位置单击时都需要隐藏,即使具有的元素也是如此e.stopPropagation()

我试过了

$(document).on("click",function(){
    $("#mydiv").hide();
});

哪个有效,但不适用于具有以下内容的元素:

$(document).on("click","#someDiv",function(e){
    e.stopPropagation();
});

如何在#someDiv不删除的情况下隐藏我的元素stopPropagation我之所以需要这种灵活性,是因为我正在编写一个插件,任何人都可以使用,并且对页面上的单击事件或元素ID一无所知。

有什么方法可以将隐藏的元素绑定到所有点击?对JS或jQuery解决方案感到满意。

我知道这一定是有可能的,因为我已经看到其他插件可以做到这一点。

在此先感谢您的任何建议!

亚历山大·尼德

与您现有代码最快,最兼容的解决方案可能是换出#mydiv隐藏的侦听器,以使用香草JS,addEventListener利用useCapture可选的第三个参数来捕获事件,然后再使内部元素有机会触发自己的侦听器。在下面的代码段中查看它的运行情况:

document.addEventListener("click",function(){
    $("#mydiv").hide();
}, true);

$("#someDiv").on("click",function(e){
    console.log('some div clicked!');
    e.stopPropagation();
});
.container {
  height: 100vh;
  width: 100vw;
  background-color: pink;
}

#mydiv {
  background-color: cyan;
}

#someDiv {
  background-color: lavender;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div id="mydiv">Hide me!</div>
  <div id="someDiv">I'll stop propagation!</div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击时隐藏所有打开的同级元素

来自分类Dev

在d3中设置一个单击事件以隐藏所有其他元素

来自分类Dev

单击一个子元素时如何隐藏所有其他元素

来自分类Dev

jQuery:切换被单击的元素并隐藏所有其他

来自分类Dev

获取阴影以隐藏所有元素

来自分类Dev

JQuery 隐藏所有元素

来自分类Dev

隐藏所有子元素,但首先隐藏每组元素

来自分类Dev

隐藏所有其他具有相同类的行,但单击的除外

来自分类Dev

如何从表中隐藏所有tr,但单击除外

来自分类Dev

如果元素具有“禁用”类,则拦截并阻止所有单击事件

来自分类Dev

jQuery隐藏所有没有类的元素

来自分类Dev

隐藏所有固定位置的元素

来自分类Dev

为什么过滤器隐藏所有元素?

来自分类Dev

具有多个元素但单独的数组上的单击事件

来自分类Dev

单击所有thd元素,然后单击它们的th元素

来自分类Dev

标签更改仅适用于单击的元素,而不是所有具有相同类的元素

来自分类Dev

如果在特定元素之外单击,请删除具有特定类的所有元素

来自分类Dev

Selenium Webdriver-单击具有相同ID的多个元素的隐藏元素

来自分类Dev

jQuery单击触发所有元素

来自分类Dev

通过上课单击所有元素

来自分类Dev

jQuery单击元素具有相同的类

来自分类Dev

jQuery关闭具有相同元素的单击

来自分类Dev

无法单击具有多个选项的元素

来自分类Dev

单击具有指定数据的元素

来自分类Dev

如何禁用/重新启用html元素和子元素上的所有单击/触摸/鼠标事件

来自分类Dev

如果jquery slideToggle元素被切换,则隐藏所有其他元素

来自分类Dev

有什么方法可以禁用单击元素?

来自分类Dev

显示1格,并使用Javascript单击隐藏所有其他格

来自分类Dev

显示一个div,单击隐藏所有其他

Related 相关文章

  1. 1

    单击时隐藏所有打开的同级元素

  2. 2

    在d3中设置一个单击事件以隐藏所有其他元素

  3. 3

    单击一个子元素时如何隐藏所有其他元素

  4. 4

    jQuery:切换被单击的元素并隐藏所有其他

  5. 5

    获取阴影以隐藏所有元素

  6. 6

    JQuery 隐藏所有元素

  7. 7

    隐藏所有子元素,但首先隐藏每组元素

  8. 8

    隐藏所有其他具有相同类的行,但单击的除外

  9. 9

    如何从表中隐藏所有tr,但单击除外

  10. 10

    如果元素具有“禁用”类,则拦截并阻止所有单击事件

  11. 11

    jQuery隐藏所有没有类的元素

  12. 12

    隐藏所有固定位置的元素

  13. 13

    为什么过滤器隐藏所有元素?

  14. 14

    具有多个元素但单独的数组上的单击事件

  15. 15

    单击所有thd元素,然后单击它们的th元素

  16. 16

    标签更改仅适用于单击的元素,而不是所有具有相同类的元素

  17. 17

    如果在特定元素之外单击,请删除具有特定类的所有元素

  18. 18

    Selenium Webdriver-单击具有相同ID的多个元素的隐藏元素

  19. 19

    jQuery单击触发所有元素

  20. 20

    通过上课单击所有元素

  21. 21

    jQuery单击元素具有相同的类

  22. 22

    jQuery关闭具有相同元素的单击

  23. 23

    无法单击具有多个选项的元素

  24. 24

    单击具有指定数据的元素

  25. 25

    如何禁用/重新启用html元素和子元素上的所有单击/触摸/鼠标事件

  26. 26

    如果jquery slideToggle元素被切换,则隐藏所有其他元素

  27. 27

    有什么方法可以禁用单击元素?

  28. 28

    显示1格,并使用Javascript单击隐藏所有其他格

  29. 29

    显示一个div,单击隐藏所有其他

热门标签

归档