javascript - 请教关于jquery阻止冒泡的问题
迷茫
迷茫 2017-04-11 12:14:33
[JavaScript讨论组]

如图,我有一个弹窗想点击除轮播区域外的地方关闭弹窗,点击切换按钮实现切换图片

代码如下

$('.cut-model').bind('click',function(e){
       $(this).hide();//点击空白区域关闭弹窗
})
$('.round').bind('click',function(e){
    e.stopPropagation();//点击切换按钮阻止冒泡
})

然而。。。。并没有成功,点击切换按钮时弹窗仍然关闭,请教各位大神是什么原因,我写的不对吗?谢谢

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(5)
阿神
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script type="text/javascript" src="jquery.min.js"></script>
    <style>
        .over-lay{
            width: 300px;
            height: 300px;
            position: absolute;
            left:50px;
            top:50px;
            background-color: rgba(235,235,235,0.5);
        }

        .over-lay.hide{
            display: none;
        }

        .content{
            background-color: green;
            width: calc(100% - 60px);
            height: calc(100% - 0px);
            border-radius: 10px;
            position: absolute;
            left: 30px;
            top: 0px;
        }
        .back-button,.forward-button{
            width: 30px;
            height: 30px;
            position: absolute;
            top:calc(50% - 15px);
            left:0px;
            background-color: red;
            font-size: 12px;
        }
        .forward-button{
            right:0px;
            left:auto;
        }
    </style>
    <script>
        $(function(){
            $(".over-lay").on("click",".back-button,.forward-button",function(event){
               console.log("不关闭overlay");
                event.stopPropagation();//阻止冒泡到.over-lay
            });
            $(".over-lay").on("click",function(event){
                console.log("关闭overlay");
                $(this).addClass("hide");
            });

        });
    </script>
</head>
<body>

<p class="over-lay">
    <p  class="back-button">后退</p>
    <p class="content"></p>
    <p  class="forward-button">前进</p>
</p>

</body>
</html>
怪我咯

你的$(this).hide();的意思是点击空白然后把空白隐藏掉了。。

大家讲道理

不太理解你的意思,但是你尝试一下在按钮事件里加上e.unbind()看看

$('.round').bind('click',function(e){
    e.unbind(); // 阻止jq绑定的事件
    e.stopPropagation();
})
PHP中文网

在绑定事件前加unbind

$('.round').unbind().on('click',function(e){
   ...
})
PHP中文网

建议调整一下dom结构

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号