老师我楼层都遍历了一遍,但每次还是只加载一个楼层,为啥呢?
来源:3-1 楼层商品图片的按需加载
慕函数4234673
2020-03-18 15:14:24
// floor
var $floor=$(".floor")
$floor.items={}
$floor.loadedItemNum=0 //已加载0张图片
$floor.totalItemNum=$floor.find(".floor-img").length//获取到的总共的图片
$floor.each(function(i,elem){
$floor.on("tab-show",loadItem=function(e,index,elem){
if($floor.items[index]!=="loaded"){
$floor.trigger("tab-loadItem",[index,elem]) //如果没有加载,则触发slider-loadItem进行加载
}
})
$floor.on("tab-loadItem",function(e,index,elem){
var imgs=$(elem).find(".floor-img")//一个item里多张图片
imgs.each(function(i,el){ //对每一张图片进行遍历
var img=$(el)
loadimg(img.data("src"),function(url){
img.attr("src",url)
$floor.items[index]="loaded"
$floor.loadedItemNum++
console.log(index + ': loaded')
if($floor.loadedItemNum===$floor.totalItemNum){
//全部加载完毕
$floor.trigger("tab-itemsLoaded")
console.log("tab-itemsLoaded")
}
},function(url){
console.log("从"+url+"加载失败")
img.attr("src","img/floor/placeholder.png")
})
})
})
$floor.on("tab-itemsLoaded",function(e){
//console.log("slider-itemsLoaded")
//清除事件
$floor.off("tab-show",loadItem)
})
})
function loadimg(url,imgLoaded,failLoading){
var image=new Image();
image.onerror=function(){
if(typeof failLoading==="function") failLoading(url)
}
image.onload=function(){
if(typeof imgLoaded==="function") imgLoaded(url)
}
//setTimeout(function(){image.src=url},2000)
image.src=url
}
$floor.tab({
css3:false,
js:false,
animation:"fade",
activeIndex:0,
event:"mouseenter",
interval:0,
delay:0
})
1回答
好帮手慕星星
2020-03-18
同学你好,测试粘贴的代码代码是报错的
变量未定义。可以这样修改一下,前面添加 $floor
修改之后楼层是一起加载的:
自己可以测试下是不是这个问题,祝学习愉快!
相似问题