2010-03-22 22 views
1

當我向下滾動時,如何在元素進入視窗後立即對元素執行一個功能?當元素進入視窗執行功能

+0

http://stackoverflow.com/questions/2138307/dynamically-changing-dom-elements-as-they-gets-scrolled-into-view-performance 在這個問題中,我有代碼,會做你的想。 – 2010-03-22 20:59:51

回答

1

我還不如它張貼在這裏作爲一個答案:

function elementInView($elem, vps, vpe) { 
    var elempos = $elem.position(); 
    var pagestart = elempos.top + vps; 
    var pageend = elempos.top + vps + $elem.height(); 
    var offset = $elem.height() - Math.max(0,vps-pagestart) - Math.max(0,pageend-vpe);  
    return (vpe > 0 && offset > -200); 
} 

$('#container').bind('scroll', function() { 
    var $container = $(this); 
    var vps = $container.scrollTop(); 
    var vpe = vps + $container.height(); 

    $('li', '#container').each(function() { 
     var $this = $(this); 
     if (elementInView($this,vps,vpe)) { 
      // $this is now in view 
     } 
    }); 
}); 

我意識到這有一些性能問題,而且可以優化,但它應該是一個開始。