为什么我最后写完加载不出来图片

来源:4-1 剔除冗余代码

weixin_慕娘0355010

2020-07-02 09:09:28

// 第一中方法

// $('.dropdown').hover(function(){

//  var $dropdown=$(this);

//  $dropdown.find('.dropdown-toggle').css({

//      'background-color':'#fff',

//      'border-color':'#cdd0d4'

//  });

//  $dropdown.find('.dropdown-arrow').css({

//      'background-image':'url(../img/dropdown-arrow-active.png)'

//  });

//  $dropdown.find('.dropdown-layer').show();

// },function(){

//     var $dropdown=$(this);

//  $dropdown.find('.dropdown-toggle').css({

//      'background-color':'',

//      'border-color':'#f3f5f7'

//  });

//  $dropdown.find('.dropdown-arrow').css({

//      'background-image':'url(../img/dropdown-arrow.png)'

//  });

//  $dropdown.find('.dropdown-layer').hide();

// });



//第二种


// $('.dropdown').hover(function(){

//     $(this).addClass('dropdown-active');

// },function(){

//     $(this).removeClass('dropdown-active')

// })




(function ($) {

var dropdown = {};

$('.menu')

.on("dropdown-show", function (e) {

dropdown.loadOnce($(this), dropdown.buildMenuItem)

})

.dropDown({

css3: true,

js: false,

// delay:0

})


dropdown.buildMenuItem = function buildMenuItem($elem, data) {

var html = '';

if (data.length === 0) return;


for (var i = 0; i < data.length; i++) {

html += '<li><a href="' + data[i].url + '" target="_blank" class="menu-item">' + data[i].name + '</a></li>'


}

$elem.find('.dropdown-layer').html(html)

};






// hearder search


// var $headerSearch = $('#headerSearch');

// var html = '',

//     maxNum = 10;

// $headerSearch.on('search-getData', function (e, data) {

//     console.log(e.type)

//     // console.log(data)

//     var $this = $(this)


//     html = createHeaderSearchLayer(data, maxNum);

//     $this.Search('appendLayer', html)



//     if (html) {

//         $this.Search('showLayer');

//     } else {

//         $this.Search('hideLayer');

//     }



// }).on('search-noData', function (e) {

//     $(this).Search('hideLayer').Search('appendLayer', '');

// }).on('click', '.search-layer-item', function () {

//     $headerSearch.Search('setInputVal', $(this).html());

//     $headerSearch.Search('submit', $(this).html());

// })






// $headerSearch.Search({

//     autocomplete: true,

//     css3: false,

//     js: false,

//     animation: 'fade',

//     getDateinterval: 200

// })




// function createHeaderSearchLayer(data, maxNum) {

//     var html = '';

//     var dataNum = data['result'].length;

//     var dataLenght = data['result'].length;

//     if (dataNum === 0) {

//         return '';

//     }


//     for (var i = 0; i < dataLenght; i++) {


//         if (i >= maxNum) {

//             break;

//         }


//         html += ' <li class="search-layer-item text-ellipsis">' + data['result'][i][0] + '</li>';

//     }

//     return html;

// }

var search = {};


search.$headerSearch = $('#headerSearch');

search.html = '';

search.maxNum = 10;

search.$headerSearch.on('search-getData', function (e, data) {

console.log(e.type)

// console.log(data)

var $this = $(this)


search.html = search.$headerSearch.createHeaderSearchLayer(data, search.maxNum);

$this.Search('appendLayer', search.html)



if (search.html) {

$this.Search('showLayer');

} else {

$this.Search('hideLayer');

}



}).on('search-noData', function (e) {

$(this).Search('hideLayer').Search('appendLayer', '');

}).on('click', '.search-layer-item', function () {

search.$headerSearch.Search('setInputVal', $(this).html());

search.$headerSearch.Search('submit', $(this).html());

})






search.$headerSearch.Search({

autocomplete: true,

css3: false,

js: false,

animation: 'fade',

getDateinterval: 200

})


search.$headerSearch.createHeaderSearchLayer = function createHeaderSearchLayer(data, maxNum) {

var html = '';

var dataNum = data['result'].length;

var dataLenght = data['result'].length;

if (dataNum === 0) {

return '';

}


for (var i = 0; i < dataLenght; i++) {


if (i >= maxNum) {

break;

}


html += ' <li class="search-layer-item text-ellipsis">' + data['result'][i][0] + '</li>';

}

return html;

};




//focus-category





$('#focus-category').find('.dropdown')

.on('dropdown-show', function () {

dropdown.loadOnce($(this), dropdown.createCategoryDetails);

})

.dropDown({

css3: false,

js: false,

})


dropdown.createCategoryDetails = function createCategoryDetails($elem, data) {

var html = '';

for (var i = 0; i < data.length; i++) {

html += '<dl class="category-details cf"><dt class="category-details-title fl"><a href="###" target="_blank" class="category-details-title-link">' + data[i].title + '</a></dt><dd class="category-details-item fl">';


for (var j = 0; j < data[i].items.length; j++) {

html += '<a href="###" target="_blank" class="link">' + data[i].items[j] + '</a>';

}

html += '</dd></dl>';

}

// setTimeout(function () {

$elem.find('.dropdown-layer').html(html);

}




dropdown.loadOnce = function loadOnce($elem, success) {

var dataLoad = $elem.data('load');

if (!dataLoad) return;

if (!$elem.data('loaded')) {

$elem.data('loaded', true);


$.getJSON(dataLoad).done(function (data) {

if (typeof success === 'function') success($elem, data);

}).fail(function () {

$elem.data('loaded', false);

});

}

}




//foucs-slider 幻灯片


var slider = {};

slider.$focusSlider = $('#focus-slider');

slider.$todaysSlider = $('#todays-slider');

slider.loadImg = function loadImg(url, imgLoaded, imgFailed) {

var image = new Image();

// console.log(image)


image.onerror = function () {

if (typeof imgFailed === 'function') imgFailed(url);

}


image.onload = function () {

if (typeof imgLoaded === 'function') imgLoaded(url);

}


setTimeout(function () {

image.src = url;

}, 1000)


};

slider.lazyLoad = function ($elem) {

$elem.items = {};

$elem.loadedItemNum = 0;

$elem.totalItemNum = $elem.find('.slider-img').length;

$elem.on('slider-show', loadItem = function (e, index, elem) {

if ($elem.items[index] !== 'loaded') {

$elem.trigger('slider-loadItems', [index, elem]);

}

});

$elem.on('slider-loadItems', function (e, index, elem) {

var $imgs = $(elem).find('.slider-img');


$imgs.each(function (_, el) {

// console.log(e, el)

var $img = $(el);

slider.loadImg($img.data('src'), function (url) {

$img.attr('src', url);

console.log(index + ':loaded');

$elem.items[index] = 'loaded';

$elem.loadedItemNum++;

if ($elem.loadedItemNum === $elem.totalItemNum) {

//全部加载完毕触发一个事件

$elem.trigger('slider-itemsLoaded');

}

}, function (url) {

console.log('从' + url + '地址加载失败');

});

})





});

$elem.on('slider-itemsLoaded', function () {

//清除事件

$elem.off('slider-show', loadItem);

});

function loadImg(url, imgLoaded, imgFailed) {

var image = new Image();

// console.log(image)


image.onerror = function () {

if (typeof imgFailed === 'function') imgFailed(url);

}


image.onload = function () {

if (typeof imgLoaded === 'function') imgLoaded(url);

}


setTimeout(function () {

image.src = url;

}, 1000)


}

}


//focus

slider.lazyLoad(slider.$focusSlider)

slider.$focusSlider.slider({

css3: false,

js: true,

animation: 'fade',

activeIndex: 0,

Interval: 4000,

// loop:true    

});


//todays

slider.lazyLoad(slider.$todaysSlider)

slider.$todaysSlider.slider({

css3: false,

js: true,

animation: 'slide',

activeIndex: 0,

Interval: 4000,

// loop:true    

});





//floor


var $floor = $('.floor');

// console.log(111)

function lazyLoadFloorImgs($elem) {

var items = {},

loadedItemNum = 0,

totalItemNum = $elem.find('.floor-img').length,

loadItemfn = null;

$elem.on('tab-show', loadItemfn = function (e, index, elem) {

console.log(111)

if (items[index] !== 'loaded') {

$elem.trigger('tab-loadItems', [index, elem]);

}

});

$elem.on('tab-loadItems', function (e, index, elem) {

var $imgs = $(elem).find('.floor-img');


$imgs.each(function (_, el) {

// console.log(e, el)

var $img = $(el);

slider.loadImg($img.data('src'), function (url) {

$img.attr('src', url);

console.log(index + ':loaded');

items[index] = 'loaded';

loadedItemNum++;

if (loadedItemNum === totalItemNum) {

//全部加载完毕触发一个事件

$elem.trigger('tab-itemsLoaded');

}

}, function (url) {

console.log('从' + url + '地址加载失败');

});

})





});

$elem.on('tab-itemsLoaded', function () {

//清除事件

$elem.off('tab-show', loadItem);

});


}






// $floor.tab({

//     event: 'mouseenter',

//     css3: false,

//     js: false,

//     animation: 'fade',

//     activeIndex: 0,

//     Interval: 1000,

//     delay: 500

// });


var floorData = [{

num: '1',

text: '服装鞋包',

tabs: ['大牌', '男装', '女装'],

offsetTop: $floor.eq(0).offset().top,

height: $floor.eq(0).height(),

items: [

[{

name: '匡威男棒球开衫外套2015',

price: 479

}, {

name: 'adidas 阿迪达斯 训练 男子',

price: 335

}, {

name: '必迈BMAI一体织跑步短袖T恤',

price: 159

}, {

name: 'NBA袜子半毛圈运动高邦棉袜',

price: 65

}, {

name: '特步官方运动帽男女帽子2016',

price: 69

}, {

name: 'KELME足球训练防寒防风手套',

price: 4999

}, {

name: '战地吉普三合一冲锋衣',

price: 289

}, {

name: '探路者户外男士徒步鞋',

price: 369

}, {

name: '羽绒服2015秋冬新款轻薄男士',

price: 399

}, {

name: '溯溪鞋涉水鞋户外鞋',

price: 689

}, {

name: '旅行背包多功能双肩背包',

price: 269

}, {

name: '户外旅行双肩背包OS0099',

price: 99

}],

[{

name: '匡威男棒球开衫外套2015',

price: 479

}, {

name: 'adidas 阿迪达斯 训练 男子',

price: 335

}, {

name: '必迈BMAI一体织跑步短袖T恤',

price: 159

}, {

name: 'NBA袜子半毛圈运动高邦棉袜',

price: 65

}, {

name: '特步官方运动帽男女帽子2016',

price: 69

}, {

name: 'KELME足球训练防寒防风手套',

price: 4999

}, {

name: '战地吉普三合一冲锋衣',

price: 289

}, {

name: '探路者户外男士徒步鞋',

price: 369

}, {

name: '羽绒服2015秋冬新款轻薄男士',

price: 399

}, {

name: '溯溪鞋涉水鞋户外鞋',

price: 689

}, {

name: '旅行背包多功能双肩背包',

price: 269

}, {

name: '户外旅行双肩背包OS0099',

price: 99

}],

[{

name: '匡威男棒球开衫外套2015',

price: 479

}, {

name: 'adidas 阿迪达斯 训练 男子',

price: 335

}, {

name: '必迈BMAI一体织跑步短袖T恤',

price: 159

}, {

name: 'NBA袜子半毛圈运动高邦棉袜',

price: 65

}, {

name: '特步官方运动帽男女帽子2016',

price: 69

}, {

name: 'KELME足球训练防寒防风手套',

price: 4999

}, {

name: '战地吉普三合一冲锋衣',

price: 289

}, {

name: '探路者户外男士徒步鞋',

price: 369

}, {

name: '羽绒服2015秋冬新款轻薄男士',

price: 399

}, {

name: '溯溪鞋涉水鞋户外鞋',

price: 689

}, {

name: '旅行背包多功能双肩背包',

price: 269

}, {

name: '户外旅行双肩背包OS0099',

price: 99

}]

]

}, {

num: '2',

text: '个护美妆',

tabs: ['热门', '国际大牌', '国际名品'],

offsetTop: $floor.eq(1).offset().top,

height: $floor.eq(1).height(),

items: [

[{

name: '韩束红石榴鲜活水盈七件套装',

price: 169

}, {

name: '温碧泉八杯水亲亲水润五件套装',

price: 198

}, {

name: '御泥坊红酒透亮矿物蚕丝面膜贴',

price: 79.9

}, {

name: '吉列手动剃须刀锋隐致护',

price: 228

}, {

name: 'Mediheal水润保湿面膜',

price: 119

}, {

name: '纳益其尔芦荟舒缓保湿凝胶',

price: 39

}, {

name: '宝拉珍选基础护肤旅行四件套',

price: 299

}, {

name: '温碧泉透芯润五件套装',

price: 257

}, {

name: '玉兰油多效修护三部曲套装',

price: 199

}, {

name: 'LOREAL火山岩控油清痘洁面膏',

price: 36

}, {

name: '百雀羚水嫩倍现盈透精华水',

price: 139

}, {

name: '珀莱雅新柔皙莹润三件套',

price: 99

}],

[{

name: '韩束红石榴鲜活水盈七件套装',

price: 169

}, {

name: '温碧泉八杯水亲亲水润五件套装',

price: 198

}, {

name: '御泥坊红酒透亮矿物蚕丝面膜贴',

price: 79.9

}, {

name: '吉列手动剃须刀锋隐致护',

price: 228

}, {

name: 'Mediheal水润保湿面膜',

price: 119

}, {

name: '纳益其尔芦荟舒缓保湿凝胶',

price: 39

}, {

name: '宝拉珍选基础护肤旅行四件套',

price: 299

}, {

name: '温碧泉透芯润五件套装',

price: 257

}, {

name: '玉兰油多效修护三部曲套装',

price: 199

}, {

name: 'LOREAL火山岩控油清痘洁面膏',

price: 36

}, {

name: '百雀羚水嫩倍现盈透精华水',

price: 139

}, {

name: '珀莱雅新柔皙莹润三件套',

price: 99

}],

[{

name: '韩束红石榴鲜活水盈七件套装',

price: 169

}, {

name: '温碧泉八杯水亲亲水润五件套装',

price: 198

}, {

name: '御泥坊红酒透亮矿物蚕丝面膜贴',

price: 79.9

}, {

name: '吉列手动剃须刀锋隐致护',

price: 228

}, {

name: 'Mediheal水润保湿面膜',

price: 119

}, {

name: '纳益其尔芦荟舒缓保湿凝胶',

price: 39

}, {

name: '宝拉珍选基础护肤旅行四件套',

price: 299

}, {

name: '温碧泉透芯润五件套装',

price: 257

}, {

name: '玉兰油多效修护三部曲套装',

price: 199

}, {

name: 'LOREAL火山岩控油清痘洁面膏',

price: 36

}, {

name: '百雀羚水嫩倍现盈透精华水',

price: 139

}, {

name: '珀莱雅新柔皙莹润三件套',

price: 99

}]

]

}, {

num: '3',

text: '手机通讯',

tabs: ['热门', '品质优选', '新机尝鲜'],

offsetTop: $floor.eq(2).offset().top,

height: $floor.eq(2).height(),

items: [

[{

name: '摩托罗拉 Moto Z Play',

price: 3999

}, {

name: 'Apple iPhone 7 (A1660)',

price: 6188

}, {

name: '小米 Note 全网通 白色',

price: 999

}, {

name: '小米5 全网通 标准版 3GB内存',

price: 1999

}, {

name: '荣耀7i 海岛蓝 移动联通4G手机',

price: 1099

}, {

name: '乐视(Le)乐2(X620)32GB',

price: 1099

}, {

name: 'OPPO R9 4GB+64GB内存版',

price: 2499

}, {

name: '魅蓝note3 全网通公开版',

price: 899

}, {

name: '飞利浦 X818 香槟金 全网通4G',

price: 1998

}, {

name: '三星 Galaxy S7(G9300)',

price: 4088

}, {

name: '华为 荣耀7 双卡双待双通',

price: 1128

}, {

name: '努比亚(nubia)Z7Max(NX505J)',

price: 728

}],

[{

name: '摩托罗拉 Moto Z Play',

price: 3999

}, {

name: 'Apple iPhone 7 (A1660)',

price: 6188

}, {

name: '小米 Note 全网通 白色',

price: 999

}, {

name: '小米5 全网通 标准版 3GB内存',

price: 1999

}, {

name: '荣耀7i 海岛蓝 移动联通4G手机',

price: 1099

}, {

name: '乐视(Le)乐2(X620)32GB',

price: 1099

}, {

name: 'OPPO R9 4GB+64GB内存版',

price: 2499

}, {

name: '魅蓝note3 全网通公开版',

price: 899

}, {

name: '飞利浦 X818 香槟金 全网通4G',

price: 1998

}, {

name: '三星 Galaxy S7(G9300)',

price: 4088

}, {

name: '华为 荣耀7 双卡双待双通',

price: 1128

}, {

name: '努比亚(nubia)Z7Max(NX505J)',

price: 728

}],

[{

name: '摩托罗拉 Moto Z Play',

price: 3999

}, {

name: 'Apple iPhone 7 (A1660)',

price: 6188

}, {

name: '小米 Note 全网通 白色',

price: 999

}, {

name: '小米5 全网通 标准版 3GB内存',

price: 1999

}, {

name: '荣耀7i 海岛蓝 移动联通4G手机',

price: 1099

}, {

name: '乐视(Le)乐2(X620)32GB',

price: 1099

}, {

name: 'OPPO R9 4GB+64GB内存版',

price: 2499

}, {

name: '魅蓝note3 全网通公开版',

price: 899

}, {

name: '飞利浦 X818 香槟金 全网通4G',

price: 1998

}, {

name: '三星 Galaxy S7(G9300)',

price: 4088

}, {

name: '华为 荣耀7 双卡双待双通',

price: 1128

}, {

name: '努比亚(nubia)Z7Max(NX505J)',

price: 728

}]

]

}, {

num: '4',

text: '家用电器',

tabs: ['热门', '大家电', '生活电器'],

offsetTop: $floor.eq(3).offset().top,

height: $floor.eq(3).height(),

items: [

[{

name: '暴风TV 超体电视 40X 40英寸',

price: 1299

}, {

name: '小米(MI)L55M5-AA 55英寸',

price: 3699

}, {

name: '飞利浦HTD5580/93 音响',

price: 2999

}, {

name: '金门子H108 5.1套装音响组合',

price: 1198

}, {

name: '方太ENJOY云魔方抽油烟机',

price: 4390

}, {

name: '美的60升预约洗浴电热水器',

price: 1099

}, {

name: '九阳电饭煲多功能智能电饭锅',

price: 159

}, {

name: '美的电烤箱家用大容量',

price: 329

}, {

name: '奥克斯(AUX)936破壁料理机',

price: 1599

}, {

name: '飞利浦面条机 HR2356/31',

price: 665

}, {

name: '松下NU-JA100W 家用蒸烤箱',

price: 1799

}, {

name: '飞利浦咖啡机 HD7751/00',

price: 1299

}],

[{

name: '暴风TV 超体电视 40X 40英寸',

price: 1299

}, {

name: '小米(MI)L55M5-AA 55英寸',

price: 3699

}, {

name: '飞利浦HTD5580/93 音响',

price: 2999

}, {

name: '金门子H108 5.1套装音响组合',

price: 1198

}, {

name: '方太ENJOY云魔方抽油烟机',

price: 4390

}, {

name: '美的60升预约洗浴电热水器',

price: 1099

}, {

name: '九阳电饭煲多功能智能电饭锅',

price: 159

}, {

name: '美的电烤箱家用大容量',

price: 329

}, {

name: '奥克斯(AUX)936破壁料理机',

price: 1599

}, {

name: '飞利浦面条机 HR2356/31',

price: 665

}, {

name: '松下NU-JA100W 家用蒸烤箱',

price: 1799

}, {

name: '飞利浦咖啡机 HD7751/00',

price: 1299

}],

[{

name: '暴风TV 超体电视 40X 40英寸',

price: 1299

}, {

name: '小米(MI)L55M5-AA 55英寸',

price: 3699

}, {

name: '飞利浦HTD5580/93 音响',

price: 2999

}, {

name: '金门子H108 5.1套装音响组合',

price: 1198

}, {

name: '方太ENJOY云魔方抽油烟机',

price: 4390

}, {

name: '美的60升预约洗浴电热水器',

price: 1099

}, {

name: '九阳电饭煲多功能智能电饭锅',

price: 159

}, {

name: '美的电烤箱家用大容量',

price: 329

}, {

name: '奥克斯(AUX)936破壁料理机',

price: 1599

}, {

name: '飞利浦面条机 HR2356/31',

price: 665

}, {

name: '松下NU-JA100W 家用蒸烤箱',

price: 1799

}, {

name: '飞利浦咖啡机 HD7751/00',

price: 1299

}]

]

}, {

num: '5',

text: '电脑数码',

tabs: ['热门', '电脑/平板', '潮流影音'],

offsetTop: $floor.eq(4).offset().top,

height: $floor.eq(4).height(),

items: [

[{

name: '戴尔成就Vostro 3800-R6308',

price: 2999

}, {

name: '联想IdeaCentre C560',

price: 5399

}, {

name: '惠普260-p039cn台式电脑',

price: 3099

}, {

name: '华硕飞行堡垒旗舰版FX-PRO',

price: 6599

}, {

name: '惠普(HP)暗影精灵II代PLUS',

price: 12999

}, {

name: '联想(Lenovo)小新700电竞版',

price: 5999

}, {

name: '游戏背光牧马人机械手感键盘',

price: 499

}, {

name: '罗技iK1200背光键盘保护套',

price: 799

}, {

name: '西部数据2.5英寸移动硬盘1TB',

price: 419

}, {

name: '新睿翼3TB 2.5英寸 移动硬盘',

price: 849

}, {

name: 'Rii mini i28无线迷你键盘鼠标',

price: 349

}, {

name: '罗技G29 力反馈游戏方向盘',

price: 2999

}],

[{

name: '戴尔成就Vostro 3800-R6308',

price: 2999

}, {

name: '联想IdeaCentre C560',

price: 5399

}, {

name: '惠普260-p039cn台式电脑',

price: 3099

}, {

name: '华硕飞行堡垒旗舰版FX-PRO',

price: 6599

}, {

name: '惠普(HP)暗影精灵II代PLUS',

price: 12999

}, {

name: '联想(Lenovo)小新700电竞版',

price: 5999

}, {

name: '游戏背光牧马人机械手感键盘',

price: 499

}, {

name: '罗技iK1200背光键盘保护套',

price: 799

}, {

name: '西部数据2.5英寸移动硬盘1TB',

price: 419

}, {

name: '新睿翼3TB 2.5英寸 移动硬盘',

price: 849

}, {

name: 'Rii mini i28无线迷你键盘鼠标',

price: 349

}, {

name: '罗技G29 力反馈游戏方向盘',

price: 2999

}],

[{

name: '戴尔成就Vostro 3800-R6308',

price: 2999

}, {

name: '联想IdeaCentre C560',

price: 5399

}, {

name: '惠普260-p039cn台式电脑',

price: 3099

}, {

name: '华硕飞行堡垒旗舰版FX-PRO',

price: 6599

}, {

name: '惠普(HP)暗影精灵II代PLUS',

price: 12999

}, {

name: '联想(Lenovo)小新700电竞版',

price: 5999

}, {

name: '游戏背光牧马人机械手感键盘',

price: 499

}, {

name: '罗技iK1200背光键盘保护套',

price: 799

}, {

name: '西部数据2.5英寸移动硬盘1TB',

price: 419

}, {

name: '新睿翼3TB 2.5英寸 移动硬盘',

price: 849

}, {

name: 'Rii mini i28无线迷你键盘鼠标',

price: 349

}, {

name: '罗技G29 力反馈游戏方向盘',

price: 2999

}]

]

}];


function loadImgs($imgs, success,fail) {


$imgs.each(function (_, el) {

// console.log(e, el)

var $img = $(el);

slider.loadImg($img.data('src'), function (url) {

$img.attr('src', url);

success();

}, function (url) {

console.log('从' + url + '地址加载失败');

fail($img,url);

});

})


}

// op = {

//     $container:$elem,

//     totalItemNuma:5,

//     triggerEvent:'floor-show',

//     id:'floors'

// }

function loadUntil(options) {

// console.log(options.id)

// console.log('111' + id)

var items = {},

loadedItemNum = 0,

// totalItemNum = $floor.length;

loadItemfn = null,

$elem = options.$container,

id = options.id;

$elem.on(options.triggerEvent, loadItemfn = function (e, index, elem) {

console.log(111)

if (items[index] !== 'loaded') {

$elem.trigger(id + '-loadItems', [index, elem, function () {

items[index] = 'loaded';

loadedItemNum++;

if (loadedItemNum === options.totalItemNum) {

//全部加载完毕触发一个事件

$elem.trigger(id + '-itemsLoaded');

}

}]);

}

});

$elem.on(id + '-itemsLoaded', function () {

//清除事件

$elem.off(options.triggerEvent, loadItemfn);

// $win.off('scroll resize', timeToShow);

});

}


// function lazyLoadFloor() {

//     var items = {},

//         loadedItemNum = 0,

//         totalItemNum = $floor.length;

//     loadItemfn = null;

//     $doc.on('floor-show', loadItemfn = function (e, index, elem) {

//         console.log(111)

//         if (items[index] !== 'loaded') {

//             $doc.trigger('floor-loadItems', [index, elem]);

//         }

//     });

//     $doc.on('floor-loadItems', function (e, index, elem) {


//         var html = buildFloor(floorData[index]),

//             $elem = $(elem);


//         // console.log(index + ':loaded');

//         items[index] = 'loaded';

//         loadedItemNum++;

//         if (loadedItemNum === totalItemNum) {

//             //全部加载完毕触发一个事件

//             $doc.trigger('floor-itemsLoaded');

//         }

//         console.log('aaa')

//         setTimeout(function () {

//             $elem.html(html);

//             lazyLoadFloorImgs($elem)

//             $elem.tab({

//                 event: 'mouseenter',

//                 css3: false,

//                 js: false,

//                 animation: 'fade',

//                 activeIndex: 0,

//                 Interval: 1000,

//                 delay: 500

//             });

//         }, 1000)


//     });

//     $doc.on('floor-itemsLoaded', function () {

//         //清除事件

//         $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) {

html = '';

html += '<div class="floor-body">';

for (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 timeToShow() {

$floor.each(function (index, elem) {

if (isVisible($(elem))) {

console.log(index + 'show')

$doc.trigger('floor-show', [index, elem]);

}

})

}


$floor.on('floor-loadItems', function (e, index, elem, success) {

loadImg($(elem).find('.floor-img'),success,function($img,url){

$img.attr('src','../img/floor/placeholder.png');

})

})

$doc.on('floor-loadItems', function (e, index, elem, success) {

var html = buildFloor(floorData[index]),

$elem = $(elem);


// console.log(index + ':loaded');

success();

setTimeout(function () {

$elem.html(html);

loadUntil({

$container: $elem,

totalItemNuma: $elem.find('.floor-img').length,

triggerEvent: 'tab-show',

id: 'floor'

})

$elem.tab({

event: 'mouseenter',

css3: false,

js: false,

animation: 'fade',

activeIndex: 0,

Interval: 1000,

delay: 500

});

}, 1000)

});

$doc.on('floor-itemsLoaded', function () {

$win.off('scroll resize', timeToShow);

})

$win.on('scroll resize', timeToShow)

loadUntil({

$container: $doc,

totalItemNuma: $floor.length,

triggerEvent: 'floor-show',

id: 'floors'

});

timeToShow();


})(jQuery)





写回答

1回答

好帮手慕久久

2020-07-02

同学你好,代码中有如下问题:

1. 每一个楼层调用loadUntil时,传入的id是“floors”,所以对应监听的事件应该是“floors-loadItems”和“floors-itemsLoaded”,对应修改如下:

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

2. 加载每一个楼层内图片数据时,方法名应该是loadImgs,如下:

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

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

0

0 学习 · 14456 问题

查看课程