当我点击.foo
区域时,.bar
会显示
当我点击document
区域时,.bar
会隐藏
但是当我点击.foo
区域使.bar
隐藏时,我不知道该怎么做。
<div class="foo"></div>
<div class="bar"></div>
我已阅读此question此article,因此我不想在我的代码中使用event.stopPropagation()
,因为它很危险。
$('.foo').click(function() {
$('.bar').show()
})
$(document).mouseup(function(e) {
var _con = $('.bar');
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
$('.bar').hide();
}
});
&#13;
.foo {
width: 100px;
height: 100px;
background: red;
margin-bottom: 20px;
}
.bar {
width: 100px;
height: 100px;
background: green;
display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="foo"></div>
<div class="bar"></div>
&#13;
答案 0 :(得分:3)
你可以通过2种方式做到这一点,如果第一种方法不起作用,第二种方法可能有效。请看看并测试。
$('.foo').click(function(){
$('.bar').toggle();
});
//2nd approach
$('.foo').click(function(){
var bar = $('.bar');
if(bar.css('display') == "block"){
bar.css('display', 'none');
}else{
bar.css('display', 'block');
}
});