检测一个元素是否可见

这个问题在这里已经有了答案:

  • 我如何检查一个元素是否隐藏在jQuery中? 53个答案

  • 您正在寻找:

    .is(':visible')
    

    尽管你应该改变你的选择器来使用jQuery,因为你在其他地方使用它:

    if($('#testElement').is(':visible')) {
        // Code
    }
    

    需要注意的是,如果目标元素的父元素中的任何一个隐藏,那么子节点上的.is(':visible')将返回false (这很有意义)。

    jQuery 3

    :visible是一个相当慢的选择器,因为它必须遍历DOM树检查一堆元素。 jQuery 3有个好消息,但是,这篇文章解释了(Ctrl + F代表:visible ):

    感谢Paul Irish在Google的一些侦探工作,我们发现了一些情况,当我们可以在同一个文档中多次使用像visible这样的自定义选择器时,可以跳过一堆额外的工作。 那个特例现在比现在快17倍!

    请记住,即使有了这种改进,诸如visible和hidden之类的选择器也可能很昂贵,因为它们依赖于浏览器来确定元素是否实际显示在页面上。 这可能需要在最糟糕的情况下完全重新计算CSS样式和页面布局! 尽管我们在大多数情况下并未阻止它们的使用,但我们建议测试您的页面以确定这些选择器是否会导致性能问题。


    进一步扩展到您的特定用例,有一个名为$.fadeToggle()的内置jQuery函数:

    function toggleTestElement() {
        $('#testElement').fadeToggle('fast');
    }
    

    没有必要,只需在元素上使用fadeToggle()

    $('#testElement').fadeToggle('fast');
    

    这是一个演示。


    if($('#testElement').is(':visible')){
        //what you want to do when is visible
    }
    
    链接地址: http://www.djcxy.com/p/2373.html

    上一篇: Detect if an element is visible

    下一篇: jQuery to loop through elements with the same class