2013-03-29 13 views
5

Bir öğenin bir html sayfasında görünür olup olmadığını öğrenmenin bir yolu var mı? Bunun gibiÖğe bir html sayfasında kullanıcı tarafından görülebilirse test edin

:

enter image description here

Bir can muhtemelen yatay/dikey kaydırma konumlarını dikkate yok, tarayıcı penceresinin genişlik/yükseklik ve pozisyon/sayfadaki elemanın büyüklüğü, ancak JQuery'de biraz deneyimim var, bu yüzden nasıl yapacağımı bilmiyorum. Ve bir kişinin arayabileceği basit bir işlev olabilir, bilmiyorum.

+0

olası yinelenen (http://stackoverflow.com/questions/8229291/how-to-check-if-an-element [unsuru jquery ile kullanıcının görünümünde olup olmadığını kontrol etme] -en-in-the-jQuery-in-the-jquery ile kullanıcı) – BenM

+2

http://stackoverflow.com/questions/8229291/how-to-check-if-an-element-is-in-the- görünümüdür-of-the-kullanıcı ile-jquery. Güzel bir şekilde soru sordu. – nickhar

cevap

5

DOM'de bir öğenin görünür durumda olup olmadığını kontrol etmek için .is(':visible') seçicilerini kullanabilirsiniz.

Düzenleme: @BenM bahsedildiği gibi sayfanızdaki unsurlar aslında kaydırılabilir aralığının dışında ise

Ancak, bu kontrol etmez - o durumda kullanabileceği bir büyük küçük eklenti olurdu Viewport Selectors for jQuery.

+0

Hayır, yapamazsınız. Bu, fiziksel olarak DOM'ta görüntülenip görüntülenmeyeceğini tanımlar, kullanıcının ekranlarında görünse de değil. Bir öğe görülebilir, ancak kaydırma aralığının dışında olabilir. – BenM

+0

Tamamen dürüstsün, özür dilerim, şimdi düzenleyeyim. – lifetimes

0

Bunu yapmak için kullandığım bazı kodlar. Harika çalışmak için test edilmiştir.

function isVisible($obj) { 
    var top = $(window).scrollTop(); 
    var bottom = top + $(window).height(); 
    var objTop = $obj.offset().top; 
    var objBottom = objTop + $obj.height(); 

    if(objTop < bottom && objBottom > top) { 
     //some part of $obj is visible on the screen. 
     //does not consider left/right, only vertical. 
    } 
} 
ait
İlgili konular