我已经问过一个类似的问题,但没有人能够提供帮助。
我现在想先用一个理论问题来试试:
我在一个可移动的 div 和一个视口中有大约 7xx - 15xx 个 HTML 元素(比如说 1000px+500px)。
我可以在这个视口中拖动带有这些元素的 div,当一个元素进入视口时,它会加载一个图像。
因此,每次拖动时,jQuery 都必须检查元素是否在视口中。
我遇到的问题是这真的很滞后(Chrome除外),我不知道为什么。使用 300 个元素,一切正常。
jQuery 处理的太多了吗?
函数加载图像(){
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">