-4

私はすでに同様の質問をしましたが、誰も助けることができませんでした。

最初に理論的な質問で試してみたいと思います:

移動可能な div とビューポート (1000px + 500px としましょう) に約 7xx - 15xx の HTML 要素があります。

このビューポート内でこれらの要素を含む div をドラッグできます。要素がビューポートに入ると、画像が読み込まれます。

そのため、ドラッグするたびに、jQuery は要素がビューポートにあるかどうかを確認する必要があります。

私が直面している問題は、これが本当に遅い (Chrome を除く) ことであり、その理由はわかりません。300 個の要素を使用すると、すべて正常に動作します。

jQuery で処理するには多すぎますか?

関数 LoadImage() {

var images = $(".emptyTile");
//console.log(images);

//Viewport data
var inview = images.filter(function() {   
    var top =       m.viewingBox.offset().top -200;
    var left =      m.viewingBox.offset().left -200;
    var right =     m.viewingBox.offset().left + m.viewingBox.width() +200;
    var bot =       m.viewingBox.offset().top + m.viewingBox.height() +200;

    //Image data
    var imgT = $(this).offset().top;
    var imgL = $(this).offset().left;
    var imgR = $(this).offset().left + $(this).width();
    var imgB = $(this).offset().top + $(this).height();             

    //check borders of viewport
    return (imgB > top && imgR > left && imgL < right && imgT < bot)
});

images.one("loadIt", function() {
    source = $(this).attr("data-src");

    if (source) {
        $(this).attr("src", source);
        $(this).attr("class", "fullTile");
    }
});

loaded = inview.trigger("loadIt");
images = images.not(loaded);

}

これは、スイッチをトリガーする前の emptyFile です。

<img class="emptyTile" data-src="images/map3/map673.png" src="images/loading.gif">

以降:

<img class="emptyTile" data-src="images/map3/map673.png" src="images/map3/map673.png">
4

1 に答える 1