楼层加载不出来
来源: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、缺少楼层加载图片的代码:

2、单词写错:

自己修改测试下,祝学习愉快!
慕后端8593059
提问者
2019-01-24
floorData数据是粘贴的 文本太长不能一次上传
相似问题