Стандартные функции jquery с использованием псевдоклассов is(«:visible»), is(«:hidden») не решают такой задачи, когда нужно определить что элемент находится в зоне окна прокрутки и видим. Чтобы определить можно воспользоваться такой функцией:
var Visible = function(target) {
var targetPosition = {
top: window.pageYOffset + target.getBoundingClientRect().top,
left: window.pageXOffset + target.getBoundingClientRect().left,
right: window.pageXOffset + target.getBoundingClientRect().right,
bottom: window.pageYOffset + target.getBoundingClientRect().bottom
},
windowPosition = {
top: window.pageYOffset,
left: window.pageXOffset,
right: window.pageXOffset + document.documentElement.clientWidth,
bottom: window.pageYOffset + document.documentElement.clientHeight
};
if (targetPosition.bottom > windowPosition.top &&
targetPosition.top < windowPosition.bottom &&
targetPosition.right > windowPosition.left &&
targetPosition.left < windowPosition.right) {
return true;
} else {
return false;
}
};