如何使元素的可见度.hide(), .show(),或.toggle()?

如果一个元素是visiblehidden?


当前回答

就是这样jj 查询内部解决这个问题 :

jQuery.expr.pseudos.visible = function( elem ) {
    return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
};

如果您不使用 jQuery, 您可以使用这个代码, 并将其转换为您自己的功能 :

function isVisible(elem) {
    return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
};

哪个isVisible将返回true只要元素是可见的。

其他回答

如果隐藏在类 - d - no 类中

if (!$('#ele').hasClass('d-none')) {
        $('#ele').addClass('d-none'); //hide 

    }


  

我只是想澄清,在jQuery,

某些要素可被视为隐藏,原因如下:

  • 它们有一个 CSS 显示值, 没有任何值 。
  • 它们组成元素 类型 = "隐藏" 。
  • 它们的宽度和高度明确定为0。
  • 隐藏了祖先元素,所以该元素不在页面上显示。

具有可见度的要素: 隐藏或不透明: 0 被视为可见, 因为它们仍然在布局中消耗空间 。 在隐藏元素的动画中, 该元素被视为可见, 直到动画结束 。

资料来源:隐藏选择器 jQuery API 文件

if($('.element').is(':hidden')) {
  // Do something
}

原为:hide(), show()toggle()内嵌 cs (display:none 或 显示: block) 到元素。 同样, 我们也可以很容易地使用永久运算符来检查元素是否隐藏或可见, 检查显示 CSS 。

更新:

  • 您还需要检查元素 CSS 设置为可见度: “ 可见” 或“ 隐蔽” 。
  • 如果显示属性被设置为内嵌区块、区块、弹性,则该元素也将是可见的。

这样我们就可以检查一个元素的属性, 使得它隐形。 所以它们是display: nonevisibility: "hidden";

我们可以创建一个用于检查对隐藏元素负责的财产的物件:

var hiddenCssProps = {
display: "none",
visibility: "hidden"
}

我们可以通过在对象匹配中环绕每个关键值来检查密钥的元素属性是否与隐藏的属性值匹配 。

var isHidden = false;
for(key in hiddenCssProps) {
  if($('#element').css(key) == hiddenCssProps[key]) {
     isHidden = true;
   }
}

如果您想要检查像元素高度: 0 或宽度: 0 或以上这样的属性, 您可以扩展此对象, 并添加更多属性, 并且可以检查 。

公平地说,问题在日期之前这笔回答。

我不是要批评《任择议定书》,而是要帮助任何仍在提出这一问题的人。

确定某物是否可见的正确方法是咨询你的视觉模型;

如果你不知道这意味着什么 那你就要踏上发现之旅 让你的工作变得不那么困难了

以下是对示范 -- -- 观观 -- -- 模型建筑(MVVM)。

击出JS是一个具有约束力的图书馆, 它会让您在不学习整个框架的情况下尝试这些 。

这里有一些 JavaScript 代码和一个DIV 可能可见也可能看不到。

<html>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script>
    var vm = {
        IsDivVisible: ko.observable(true);
    }
    vm.toggle = function(data, event) {
      // Get current visibility state for the div
      var x = IsDivVisible();
      // Set it to the opposite
      IsDivVisible(!x);
    }
    ko.applyBinding(vm);
</script>
<div data-bind="visible: IsDivVisible">Peekaboo!</div>
<button data-bind="click: toggle">Toggle the div's visibility</button>
</body>
</html>

请注意,切换函数不与国防部协商确定 div 的可见度;它参考视觉模型。

有很多方法可以检查元素是否可见或隐藏在 jQuery 中。

Demo HTML 例如引用

<div id="content">Content</div>
<div id="content2" style="display:none">Content2</div>

使用可见性过滤过滤器选择器$('element:hidden')$('element:visible')

  • $('element:hidden'):选择隐藏的所有元素。

    Example:
       $('#content2:hidden').show();
    
  • $('element:visible'):选择可见的所有元素。

    Example:
       $('#content:visible').css('color', '#EEE');
    

更多信息http://api.jquery.com/category/selectors/visibility-filter-selectors/

使用使用is()过滤过滤

    Example:
       $('#content').is(":visible").css('color', '#EEE');

    Or checking condition
    if ($('#content').is(":visible")) {
         // Perform action
    }

更多信息http://api.jquery.com/is/