43

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

var j = jQuery.noConflict();

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

但它不起作用。

4

3 回答 3

13
// 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',您还必须测试和其他人。例如,元素可能有which doesn't make it 。inline-blockvisibilitydisplay:block:visibility:hidden:visible

于 2013-07-01T12:54:15.687 回答
10

尝试:

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

参考这篇文章:如何检查一个元素是否隐藏在 jQuery 中?

于 2013-07-01T12:50:19.557 回答
3

使用.is():visible

var j = jQuery.noConflict();

jQuery(function($) {
    if($('#element').is(':visible')){
        $('body').scrollTo('#target');
    };
});
于 2013-07-01T12:46:01.337 回答