楼层加载不出来

来源:2-1 tab选项卡-基本功能

慕后端8593059

2019-01-24 22:20:10

//延迟加载楼层
    function lazyLoadFloor(){
             var items = {},
             loadedItemNum = 0,
             totalItemNum = $floor.length,
             loadItemFn=null;                         
             
             $doc.on('floor-show', loadItemFn = function(e, index, elem) {
                 console.log(1);
                 //判断何时开始加载
                 if (items[index] !== 'loaded') {
                     $doc.trigger('floors-loadItem', [index, elem]);
                 }
             });
             $doc.on('floors-loadItem', function(e, index, elem) {
                 var html=buildFloor(floorData[index]),
                     $elem=$(elem);                
                        
                         items[index] = 'loaded';
                         console.log(items[index]);
                         loadedItemNum++;
                         console.log(index + ': loaded');
                         if (loadedItemNum === totalItemNum) {
                             // 全部加载完毕
                             $doc.trigger('floors-itemsLoaded');
                         }
                         setTimeout(function () {
                             $elem.html(html); 
                         },1000);                                       
             });
             $doc.on('floors-itemsLoaded', function(e) {
                 console.log('floors-itemsLoaded');
                 // 清除事件
                 $doc.off('floor-show', loadItemFn);
                 //$win.off('scroll resize', timeToShow);
             });
    };
    function buildFloor(floorData) {
        var html = '';
        html += '<div class="container">';
        html += buildFloorHead(floorData);
        html += buildFloorBody(floorData);
        html += '</div>';
        return html;
    };
    //按需加载头部
    function buildFloorHead(floorData) {
        var html = '';
        html += '<div class="floor-head">';
        html += '<h2 class="floor-title fl"><span class="floor-title-num">' + floorData.num + 'F</span><span class="floor-title-text">' + floorData.text + '</span></h2>';
        html += '<ul class="tab-item-wrap fr">';
        for (var i = 0; i < floorData.tabs.length; i++) {
            html += '<li class="fl"><a href="javascript:;" class="tab-item">' + floorData.tabs[i] + '</a></li>';
            if (i !== floorData.tabs.length - 1) {
                html += '<li class="floor-divider fl text-hidden">分隔线</li>';
            }
        }
        html += '</ul>';
        html += '</div>';
        return html;
    };
    //主体
    function buildFloorBody(floorData) {
        var html = '';
        html += '<div class="floor-body">';
        for (var i = 0; i < floorData.items.length; i++) {
            html += '<ul class="tab-panel">';
            for (var j = 0; j < floorData.items[i].length; j++) {
                html += '<li class="floor-item fl">';
                html += '<p class="floor-item-pic"><a href="###" target="_blank"><img src="img/floor/loading.gif" class="floor-img" data-src="img/floor/' + floorData.num + '/' + (i + 1) + '/' + (j + 1) + '.png" alt="" /></a></p>';
                html += '<p class="floor-item-name"><a href="###" target="_blank" class="link">' + floorData.items[i][j].name + '</a></p>';
                html += '<p class="floor-item-price">' + floorData.items[i][j].price + '</p>';
                html += '</li>';
            }
            html += '</ul>';
        }
        html += '</div>';
        return html;
    };     
    var $win=$(window);
    var $doc=$(document);
    function isVisible($elem) {
        return ($win.height()+$win.scrollTop()>$elem.offset().top) && ($win.scrollTop()<$elem.offset().top+$elem.height())
    }
       function timeShow(){
        console.log('time show');
           $floor.each(function(index,elem){
            if(isVisible($(elem))){
                // console.log('the '+(index+1)+' floor is visible');
                $doc.trigger('floors-show',[index,elem]);
            }
        });
       }
       $win.on('scroll resize',timeShow);
       lazyLoadFloor();
       timeShow();

 

写回答

2回答

好帮手慕星星

2019-01-25

你好,粘贴上来的代码中有缺少的部分,还有写错的部分:

1、缺少楼层加载图片的代码:

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

2、单词写错:

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

自己修改测试下,祝学习愉快!

0

慕后端8593059

提问者

2019-01-24

floorData数据是粘贴的 文本太长不能一次上传

0

0 学习 · 4826 问题

查看课程