jQuery LazyLoadは、1pxでもページをスクロールするまで、開いているページの表示部分に画像をロードしません。
ページをスクロールすると、すべて正しく機能します
アップデート:
CoffeScript
jQuery ->
$("img.lazy").show().lazyload()
$(window).resize()
ただし$(window).resize()
、ページが読み込まれたときにブラウザのコンソールから入力した場合にのみ役立ちます
jQuery LazyLoadは、1pxでもページをスクロールするまで、開いているページの表示部分に画像をロードしません。
ページをスクロールすると、すべて正しく機能します
アップデート:
CoffeScript
jQuery ->
$("img.lazy").show().lazyload()
$(window).resize()
ただし$(window).resize()
、ページが読み込まれたときにブラウザのコンソールから入力した場合にのみ役立ちます
$("img.lazy").lazyload({
threshold : 50
});
そしてこれを追加します:
$(window).load(function(){
$("html,body").trigger("scroll");
});
画像には幅と高さを設定する必要があります。
手遅れですが、それでもこの問題が発生する場合は、必要なイベントで純粋なjavascript setTimeout()とwindow.scrollBy()の組み合わせを使用してください。ページが読み込まれたときに最初に読み込まれたタブだけに画像が表示され、ユーザーが少しスクロールするまでクリックすると残りのタブが表示されないタブ付きペインの下に画像を表示する必要があったため、onClickで解決しました。私のコードは以下の通りです:
function myFunction() {
setTimeout(function() {
window.scrollBy(0, 100)
}, 1000);;
}
<style>
div {
background-color: #FF9900;
height: 999px;
width: 100%;
}
</style>
<a href="#" onClick="myFunction()">Click me to scroll after 1000 milliseconds</a>
<div></div>
これを試して....
$(function() {
$("img.lazy").show().lazyload()
window.onload = function() {
$(window).resize()
};
});
これが私にとってこの問題を解決したものです:
$("html,body").on('scroll', function(){
$(window).resize()
});
本当にシンプルで、bodyタグとhtmlタグからscrollイベントでwindow.resizeを作成するだけです。バム。
Lazyloadの現在のバージョンは、ウィンドウロードイベント時に初期更新をトリガーします。したがって、後で画像を動的にロードする場合は、更新サイクルをトリガーするためのスクロールなどの追加のイベントが必要です。これは、スクロール後にのみ画像が表示されるという私の問題でした。
$.post()
特定のものでフィルタリングするたびにクエリを介して画像を取得するため、リロードするたびにすべてを実行する必要があります
$.post( "queries.php", { var1:var1, var2:var2, .. }, function(response){
for( var i=0; i<response.length; i++ ) { $("#container").append(response[i]); }
$("img.lazy").lazyload();
$(window).resize();
}, "json");
lazyloadを初期化すると、トリガーするイベントを指定できます(デフォルトでは「scroll」に設定されています)。そのリストにカスタムイベントを追加し、意味のあるときにトリガーすることをお勧めします。
$('.lazy').lazyload({
event: 'scroll whenever-i-want'
});
// whenever you want to trigger your event (after ajax load, on dom ready, etc...)
$(document).trigger('whenever-i-want');
これにより、デフォルトのスクロール機能がそのまま残りますが、オンデマンドで遅延読み込みをトリガーすることもできます。
$(document).ready(function () {
$("img.lazy").lazyload({
<br/>placeholder: rooturl + "Themes/images/imgloading.gif",<br/>
effect: "fadeIn",<br/>
skip_invisible: false<br/>
});<br/>
});<br/>
$(document).ready(function() {<br/>
$(window).load(function() {<br/>
update();<br/>
}); <br/>
});<br/>
この遅延読み込みスクリプトを使用するhttps://github.com/tuupola/jquery_lazyload/blob/master/jquery.lazyload.js#L130
このSOの質問にあるように、skip_invisibleをfalseに設定すると、問題が解決しました。
z-indexで並べ替えられた複数の画像を持つスライダーの場合、lazyloadオプションfailure_limit
が便利です。
このオプションの詳細はこちら