单击body html时隐藏元素

时间:2017-04-07 12:25:45

标签: jquery html css

我有这个代码,一切正常,我想在点击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> 

2 个答案:

答案 0 :(得分:2)

试试这个:

&#13;
&#13;
$(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;
&#13;
&#13;

答案 1 :(得分:0)

你的代码和你说的是两回事。所以:

  1. 如果您只想在点击#content时隐藏所有body元素,请按照Jessika的回答。

  2. 如果您要隐藏所有#content元素,则单击#content元素除外(即当您点击#content1时,您想要隐藏{{1} }和#content2),您可以简单地执行以下操作:

    #content3

    不是隐藏和显示内容,而是可以保持不变,只隐藏其他内容。