2013-07-01 11 views
27

Chcę sprawdzić, czy element jest widoczny, a jeśli tak, chcę przewinąć do niego. Próbuję to osiągnąć za pomocą następującego jquery:Sprawdzanie widoczności elementu

var j = jQuery.noConflict(); 

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

ale to nie działa.

Odpowiedz

3
// 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 ułatwia. Nie można po prostu przetestować przed display=='block', trzeba również przetestować pod kątem inline-block i innych oprócz sprawdzania ustawienia visibility. Na przykład element może mieć wartość display:block:visibility:hidden, co nie oznacza, że ​​jest to :visible.

1

Zastosowanie .is() i :visible

var j = jQuery.noConflict(); 

jQuery(function($) { 
    if($('#element').is(':visible')){ 
     $('body').scrollTo('#target'); 
    }; 
}); 
Powiązane problemy