2009-11-15 5 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

ответ

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 
    } 
}); 

EDIT: вы можете проверить, если элемент находится в области просмотра с viewport plugin (или лучше, вы можете применить ту же логику, что и там, в любом контейнере, кроме окна)

+0

Спасибо gpilotino, но это означало бы загрузить полную строку или столбец вместо отдельные элементы сетки. Я хочу избежать загрузки полного столбца, так как сетка может стать очень большой! – Victor

+0

Я думаю, что в этом случае вы должны одновременно проверять как горизонтальные, так и вертикальные. практически вы должны проверить, что элемент visibile scrollTop/Left находится внутри окна просмотра (window.scrollTop/Left/height/width) – gpilotino

1

Вы можете использовать документ .Body. scrollTop и document.body. scrollLeft, чтобы узнать положение свитка.

P.S: gpilotino был быстрее и фактически опубликовал полезный код