Skip to content

Commit

Permalink
Merge pull request protonet#17 from tomaszrondio/master
Browse files Browse the repository at this point in the history
jquery 2.x support + checkInView fixes
  • Loading branch information
zuk committed Apr 28, 2015
2 parents 12eca83 + 068e9a7 commit 7790ed4
Showing 1 changed file with 12 additions and 14 deletions.
26 changes: 12 additions & 14 deletions jquery.inview.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,38 +43,36 @@

function checkInView() {
var viewportTop = getScrollTop(),
viewportBottom = viewportTop + getViewportHeight(),
elems = [];
viewportBottom = viewportTop + getViewportHeight();



// naughty, but this is how it knows which elements to check for
$.each($.cache, function() {
if (this.events && this.events.inview) {
elems.push(this.handle.elem);
}
});

$(elems).each(function() {
$('.inview').each(function() {
var $el = $(this),
elTop = offsetTop(this),
elHeight = $el.height(),
elBottom = elTop + elHeight,
wasInView = $el.data('inview') || false,
offset = $el.data('offset') || 0,
inView = elTop > viewportTop && elBottom < viewportBottom,
isBottomVisible = elBottom + offset > viewportTop && elTop < viewportTop,
isTopVisible = elTop - offset < viewportBottom && elBottom > viewportBottom,
inView = elTop >= viewportTop && elBottom <= viewportBottom,
isBottomVisible = elBottom + offset >= viewportTop && elTop <= viewportTop,
isTopVisible = elTop - offset <= viewportBottom && elBottom >= viewportBottom,
inViewWithOffset = inView || isBottomVisible || isTopVisible ||
(elTop < viewportTop && elBottom > viewportBottom);
(elTop <= viewportTop && elBottom >= viewportBottom);


if (inViewWithOffset) {
var visPart = (isTopVisible) ? 'top' : (isBottomVisible) ? 'bottom' : 'both';
if (!wasInView || wasInView !== visPart) {
$el.data('inview', visPart);
$el.trigger('inview', [true, visPart]);

}
} else if (!inView && wasInView) {
$el.data('inview', false);
$el.trigger('inview', [false]);

}
});
}
Expand Down Expand Up @@ -106,4 +104,4 @@
var runner = createFunctionLimitedToOneExecutionPerDelay(checkInView, 100);
$(window).on('checkInView.inview click.inview ready.inview scroll.inview resize.inview', runner);

})(jQuery);
})(jQuery);

0 comments on commit 7790ed4

Please sign in to comment.