.column
ビューポートにあるクラスのすべてのインスタンスにクラスを追加しようとしています。
この JS Fiddle.swoosh
は、ビューポート内のすべてにクラスを追加しますが、マークアップでまったく同じ js を使用すると、クラスがビューポート内に.column
追加されません。.swoosh
.column
- jqueryがロードされているかどうかを確認しましたが、そうです。
- コードは JS Fiddle で動作するため有効です
しかし、何らかの理由で、このページ.column
のビューポートの はクラスを取得していません。.swoosh
再びライブページです。
実行しようとしているコードは次のとおりです。
function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document. documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document. documentElement.clientWidth)
);
}
$.fn.checkViewportAndSetClass = function() {
$(this).each(function(){
if (isElementInViewport(this)) {
$(this).addClass("swoosh");
}
});
};
$('.column').checkViewportAndSetClass();
$(window).on("scroll", function() {
$('.column').checkViewportAndSetClass();
});