如何使用jquery检查是否隐藏了一个元素

moh*_*sen 6 html javascript jquery

我想显示和隐藏一个div如下:

$('#Div1').click(function () {
            if ($("#Div2").hidden) {
                $("#Div2").show(500);
            }
            else {
                $("#Div2").hide(1000);
            }

        });
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用.

我想通过点击页面的空白来隐藏div2我该怎么做以及我的代码在哪里错了?

Gon*_*ing 4

hidden不是 jQuery 对象的属性。尝试is(':hidden')

  $('#Div1').click(function () {
        if ($("#Div2").is(':hidden')) {
            $("#Div2").show(500);
        }
        else {
            $("#Div2").hide(1000);
        }

  });
Run Code Online (Sandbox Code Playgroud)

如果时间相同,您可以简单地使用toggle()which doeshideshow基于当前的可见性。

  $('#Div1').click(function () {
       $("#Div2").stop().toggle(500);
  });
Run Code Online (Sandbox Code Playgroud)

并作为@A。Wolff 建议,为了允许多次单击,stop还可以使用来停止任何正在进行的现有动画:

  $('#Div1').click(function () {
        if ($("#Div2").stop().is(':hidden')) {
            $("#Div2").show(500);
        }
        else {
            $("#Div2").hide(1000);
        }
  }); 
Run Code Online (Sandbox Code Playgroud)

第2部分:

要在单击页面上其他任何位置时隐藏 div,请监听单击document

例如

 $(document).click(function(){
     $("#Div2").stop().hide(1000);
 });
Run Code Online (Sandbox Code Playgroud)

不过,为了使其正常工作,您不能允许对 div1 的单击传播到文档,因此将第一部分更改为也用于stopPropagation()第一个事件参数:

  $('#Div1').click(function (e) {
        e.stopPropagation();       // stop click propagating to document click handler
        if ($("#Div2").is(':hidden')) {
            $("#Div2").show(500);
        }
        else {
            $("#Div2").hide(1000);
        }
  });
Run Code Online (Sandbox Code Playgroud)