如何检查一个元素是否被 jquery 隐藏

how to check if one element is hidden with jquery

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

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

        });

此代码无效。

我想通过单击页面的空白空间来隐藏 div2 我该怎么做,我的代码哪里错了?

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

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

  });

如果时间相同,您可以简单地使用 toggle(),它根据当前可见性执行 hideshow

  $('#Div1').click(function () {
       $("#Div2").stop().toggle(500);
  });

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

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

第 2 部分:

要在您单击页面上的其他任何地方时隐藏 div,请监听对 document 的单击:

例如

 $(document).click(function(){
     $("#Div2").stop().hide(1000);
 });

为了使其正常工作,您不能允许对 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);
        }
  });