【问题标题】:Checking visibility of an element [duplicate]检查元素的可见性[重复]
【发布时间】:2013-06-28 14:14:38
【问题描述】:

我想检查一个元素是否可见,如果是,我想向下滚动到它。我正在尝试使用以下 jquery 来实现:

var j = jQuery.noConflict();

  jQuery(document).ready(function($) {
    if(j('#element').css('display') == 'block'){
        j('body').scrollTo('#target');
      };
});

但它不起作用。

【问题讨论】:

    标签: jquery if-statement scrollto


    【解决方案1】:
    // jQuery no conflict mode
    var j = $.noConflict();
    
    // retain meaning of jQuery's handle (optional but makes it
    // sometimes easier if you don't use one-letter assignments
    // of jQuery)
    (function($){
    
      // document read
      $(function(){
        // if element is visible (a visible #element was found)
        if $('#element:visible').size() > 0){
          // scroll to #target
          $('body').scrollTo('#target');
        }
      });
    
    })(j);
    

    :visible 使它更容易。您不能只针对display=='block' 进行测试,除了检查visibility 设置之外,您还必须测试inline-block 和其他人。例如,元素可能有display:block:visibility:hidden,但它不会变成:visible

    【讨论】:

      【解决方案2】:

      试试:

      if($(element).is(":visible"))
      

      参考这个帖子:How do I check if an element is hidden in jQuery?

      【讨论】:

        【解决方案3】:

        使用.is():visible

        var j = jQuery.noConflict();
        
        jQuery(function($) {
            if($('#element').is(':visible')){
                $('body').scrollTo('#target');
            };
        });
        

        【讨论】:

          猜你喜欢
          • 2023-03-07
          • 2017-02-28
          • 2012-09-18
          • 1970-01-01
          • 2011-07-18
          • 2014-01-14
          • 1970-01-01
          相关资源
          最近更新 更多