2009-11-15 163 views
0

在JavaScript中,当屏幕中显示元素(例如div)时,是否可以触发某个操作?Javascript/AJAX元素显示事件

我有一个“无尽的”网格,水平和垂直扩展,我想在用户滚动时使用AJAX动态加载元素。

感谢

+0

这个问题可能会感兴趣的为好。 http://stackoverflow.com/questions/704758/how-to-check-if-an-element-is-really-visible-with-javascript – Nosredna 2009-11-15 23:56:39

回答

3

您可以检查是否滚动条是接近尾声的是这样 (我假设你正在使用jQuery):

$('#my-container').scroll(function(e) { 
    var tolerance = 0;  
    var $el = $(this); 
    if ($el[0].scrollTop + $el.height() >= $el[0].scrollHeight - tolerance) { 
    // do your ajax stuff 
    } 
}); 

编辑:您可以检查是否有元素在视口中与viewport plugin (或更好的,您可以将相同的逻辑应用到除窗口以外的任何容器)

+0

感谢gpilotino,但这将意味着加载一个完整的行或列,而不是网格的单个元素。我想避免加载一个完整的列,因为网格可能变得非常大! – Victor 2009-11-15 23:59:51

+0

我认为在这种情况下,你必须同时检查水平和垂直。实际上,您必须检查“visibile”元素的scrollTop/Left是否在视口内(window.scrollTop/Left/height/width) – gpilotino 2009-11-16 00:11:00

1

您可以使用文档。身体。 scrollTop和document.body。 scrollLeft知道滚动的位置。

P.S:gpilotino是更快,实际上是发布了一些有用的代码