点击子div里的一个按钮使其消失后,如何使鼠标不默认hover在父div上

发布于 2022-09-03 23:53:50 字数 562 浏览 18 评论 0

图片描述

<div id="a">
        <div id="b">
            <button id="bb">关闭</button>
        </div>
    </div>
    <script>
        $(function(){
            $("#a").hover(function(){
                $("#b").toggle();
            })
        })
        $("#bb").bind("click",function(){
            $("#b").hide();
        })
    </script>

当点击关闭时,子DIV会短暂的消失后又出现,造成闪烁

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

墨小沫ゞ 2022-09-10 23:53:50

感觉你的div的结构有问题,明明是两个平行的div,为什么要做成父子结构

手长情犹 2022-09-10 23:53:50

<div id="a"></div><div id="b"><button id="bb">关闭</button></div>

<script>
    $(function(){
        $("#a").hover(function(){
            $("#b").toggle();
        })
    })
    $("#bb").bind("click",function(){
        $("#b").hide();
    })
</script>

a和b用float:left;

听闻余生 2022-09-10 23:53:50

不然呢?

#b 放到 #a 的外面试试?

栖迟 2022-09-10 23:53:50

能把css贴一下嘛。。

荆棘i 2022-09-10 23:53:50

目测,如果需求无误的话,js逻辑是没有问题的,也就是说,问题出在你页面标签上——看你的元素嵌套,再看你的效果图,你是在#a容器内给的#b元素定位实现左右排列的吧?问题就来了,你个父元素#a绑定了hover事件,又要在它的子元素上绑定click事件,而按照事件冒泡的逻辑(你的标签页贴了事件冒泡,说明你在、也清楚问题是出在这里了),是先进入父元素,触发hover事件了。当你点击按钮的时候,你的鼠标依然是停留在#b上面,换言之,你任然触发了#a的hover事件。要解决的话,你可以试试优化一下你的页面结构,把#b提出来做#a的同级元素。或者,你试试阻止click的事件冒泡吧。

困倦 2022-09-10 23:53:50

试试stopPropagation()方法,阻止事件冒泡
第一段代码改成这样:

$("#a").hover(function(e){
    e.stopPropagation();
    $("#b").toggle();
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文