老师我楼层都遍历了一遍,但每次还是只加载一个楼层,为啥呢?

来源: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

同学你好,测试粘贴的代码代码是报错的

http://img.mukewang.com/climg/5e71fa7109998bf108930194.jpg

变量未定义。可以这样修改一下,前面添加 $floor

http://img.mukewang.com/climg/5e71fa9f095d549e12510272.jpghttp://img.mukewang.com/climg/5e71faa8095cf23d08420426.jpg

修改之后楼层是一起加载的:

http://img.mukewang.com/climg/5e71facc09392a5a24111135.jpg

自己可以测试下是不是这个问题,祝学习愉快!

0

0 学习 · 14456 问题

查看课程