我有这个代码,一切正常,我想在点击body时将所有元素#content1,#content2 ..隐藏起来。我尝试使用z-index设置小于div的身体,但没有帮助
$(function() {
$('#div1').click(function() {
$('#content1, #content2, #content3').hide();
$('#content1').show();
/* other code ..*/
});
$('#div2').click(function() {
$('#content1, #content2, #content3').hide();
$('#content2').show();
/* other code ..*/
});
});
html,body{width:100%;height:100%;}
#div1, #div2, #div3{
overflow:hidden;
float:left;
width:40px;
height:40px;
background:red;
margin:0 10px 0 0;
}
#content1, #content2, #content3{
overflow:hidden;
position:absolute;
top:50px;
background-color:#000;
color:#fff;
padding:2px 4px;
}
<!doctype html>
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1">
<div id="content1" style="display: none;">
text1
</div>
</div>
<div id="div2">
<div id="content2" style="display: none;">
text2
</div>
</div>
<div id="div3">
<div id="content3" style="display: none;">
text3
</div>
</div>
</body>
</html>
答案 0 :(得分:2)
试试这个:
$(function() {
var div1 = $("#div1");
var div2 = $("#div2");
var div3 = $("#div3");
$("body").on("click", function (e) {
if (div1.has(e.target).length || e.target == div1[0])
return;
else if (div2.has(e.target).length || e.target == div2[0])
return;
else if (div3.has(e.target).length || e.target == div3[0])
return;
$('#content1, #content2, #content3').hide();
});
});
&#13;
html,body{width:100%;height:100%;}
&#13;
<div id="div1">
<div id="content1">
text1
</div>
</div>
<div id="div2">
<div id="content2">
text2
</div>
</div>
<div id="div3">
<div id="content3">
text3
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
你的代码和你说的是两回事。所以:
如果您只想在点击#content
时隐藏所有body
元素,请按照Jessika的回答。
如果您要隐藏所有#content
元素,则单击#content
元素除外(即当您点击#content1
时,您想要隐藏{{1} }和#content2
),您可以简单地执行以下操作:
#content3
不是隐藏和显示内容,而是可以保持不变,只隐藏其他内容。