很久以前,一位前端开发人员有一些菜单,当有人在页面上的任意位置单击这些菜单时,他想要关闭这些菜单,所以他使用了一些if和提到的方法来处理他的工作。当然,后来这又让他吃了苦头,因为在上面提到的菜单中所做的点击不会生效。我该如何解决这个问题呢?或者我如何才能以不同的方式处理这个问题?我正在使用bootstrap 3,如果它有一些帮助的话
HTML
<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>……
<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
$('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;
});发布于 2014-03-06 22:54:56
$('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。
https://stackoverflow.com/questions/22227809
复制相似问题