首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绕过stopPropagation()

绕过stopPropagation()
EN

Stack Overflow用户
提问于 2014-03-06 22:46:13
回答 1查看 138关注 0票数 1

很久以前,一位前端开发人员有一些菜单,当有人在页面上的任意位置单击这些菜单时,他想要关闭这些菜单,所以他使用了一些if和提到的方法来处理他的工作。当然,后来这又让他吃了苦头,因为在上面提到的菜单中所做的点击不会生效。我该如何解决这个问题呢?或者我如何才能以不同的方式处理这个问题?我正在使用bootstrap 3,如果它有一些帮助的话

HTML

代码语言:javascript
复制
<div class="shopbar pull-right">
    <a data-toggle="collapse" href="#nav-shop" class="collapsed"> <i class="fa fa-lg fa-shopping-cart"></i> </a>
    <a data-toggle="collapse" href="#search" class="collapsed"> <i class="fa fa-lg fa-search"></i> </a>
</div>

……

代码语言:javascript
复制
    <div id="search" class="panel-collapse collapse">
        <div class="container">
            <div class="row">
                <div class="col-xs-12">
                    <div class="input-group">
                        <div class="input-group-btn">
                            <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Search In <span class="caret down"></span><span class="caret up"></span></button>
                            <ul class="dropdown-menu">
                                <li><a href="#">Blog</a></li>
                                <li><a href="#">Portfolio</a></li>
                                <li><a href="#">Events</a></li>
                                <li><a href="#">Shop</a></li>
                                <li><a href="#">Pages</a></li>
                            </ul>
                        </div><!-- /btn-group -->
                        <input type="text" class="form-control">
                        <span class="input-group-btn">
                            <button class="btn btn-default fa fa-search" type="button"></button>
                        </span>
                    </div><!-- /input-group -->
                </div>
            </div>
        </div>
    </div>

Jquery

代码语言:javascript
复制
$('html').click(function () {
    $(".shopbar a").addClass("collapsed");
    if ($("#nav-shop").hasClass("in")) {
        $("#nav-shop").collapse('hide');
    }

    if ($("#search").hasClass("in")) {
        $("#search").collapse('hide');
    }
});

$("#nav-shop").click(function (event) {
    event.stopPropagation();
    return true;
});

$("#search").click(function (event) {
    event.stopPropagation();
    return true;
});
EN

回答 1

Stack Overflow用户

发布于 2014-03-06 22:54:56

代码语言:javascript
复制
$('html').click(function (event) {

    var target = $(event.target);

    if(!target.is("#nav-shop") && !target.is("#search") ) {
        $(".shopbar a").addClass("collapsed");

        if ($("#nav-shop").hasClass("in")) {
            $("#nav-shop").collapse('hide');
        }

        if ($("#search").hasClass("in")) {
            $("#search").collapse('hide');
        }
    }
});

而且不需要event.stopPropagation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22227809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档