老师。图片加载不出来

来源:4-2 优化代码--命名空间

慕容5109188

2019-12-07 22:41:35

(function($) {


    'use strict';

    //menu

    var dropdown = {};

    $('.menu')

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

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

        })

        .dropdown({

            css3: true,

            js: false

        });


    dropdown.buildMenuItem = function($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);


    };


    //cart

    $('#cart').on('dropdown-show', function() {

        dropdown.loadOnce($(this), function($elem, data) {

            dropdown.buildCartItem($elem, data);

            dropdown.updateCart($elem, data);

        });

    }).dropdown({


        css3: true,

        js: false

    });



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


        var html = "";

        if (data.length === 0) { // no goods

            html += '<div class="cart-nogoods"><i class="icon cart-nogoods-icon fl">&#xe600;</i><div class="cart-nogoods-text fl">购物车里还没有商品<br />赶紧去选购吧!</div></div>';

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

            return;

        }


        html += '<h4 class="cart-title">最新加入的商品</h4><ul class="cart-list">';


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

            html += '<li class="cart-item"><a href="###" target="_blank" class="cart-item-pic fl"><img src="' + data[i].pic + '" alt="" /></a><div class="fl"><p class="cart-item-name text-ellipsis"><a href="###" target="_blank" class="link">' + data[i].name + '</a></p><p class="cart-item-price"><strong>¥' + data[i].price + ' x ' + data[i].num + '</strong></p></div><a href="javascript:;" title="删除" class="cart-item-delete link fr">X</a></li>';

        }


        html += '</ul><div class="cart-info"><span class="fl">共 <strong class="cart-total-num">0</strong> 件商品 共计<strong class="cart-total-price">¥ 0.00</strong></span><a href="###" target="_blank" class="cart-info-btn btn fr">去购物车</a></div>';


        // setTimeout(function(){

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

        // },1000);

    };


    function updateCart($elem, data) {

        var $cartNum = $elem.find('.cart-num'),

            $cartTotalNum = $elem.find('.cart-total-num'),

            $cartTotalPrice = $elem.find('.cart-total-price'),

            dataNum = data.length,

            totalNum = 0,

            totalPrice = 0;


        if (dataNum === 0) { // no goods

            return;

        }


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

            totalNum += +data[i].num;

            totalPrice += +data[i].num * +data[i].price;

        }


        $cartNum.html(totalNum);

        $cartTotalNum.html(totalNum);

        $cartTotalPrice.html('¥' + totalPrice);

    };



    //header search

    var search = {};

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

    search.$headerSearch.html = '';

    search.$headerSearch.maxNum = 10;


    // 获得数据处理

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

        var $this = $(this);

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

        $this.search('appendLayer', search.$headerSearch.html);

        // 将生成的html呈现在页面中        

        if (search.$headerSearch.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');

    });


    search.$headerSearch.search({

        autocomplete: true,

        css3: false,

        js: false,

        animation: 'fade',

        getDataInterval: 0

    });


    // 获取数据,生成html


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

        var html = '',

            dataNum = data['result'].length;


        if (dataNum === 0) {

            return '';

        }

        for (var i = 0; i < dataNum; 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($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);

        // },1000);


    };


    dropdown.loadOnce = function($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.$focusSlider.on('focus-loadItems',function (e, index, elem, success) {

        imgLoader.loadImgs($(elem).find('.slider-img'),success,function ($img,url) {

            $img.attr('src','img/focus-slider/placeholder.png');

        });

    });


    lazyLoad.loadUtil({

        container:   slider.$focusSlider,

        totalItemNum:  slider.$focusSlider.find('.slider-img').length,

        triggerEvent: 'slider-show',

        id: 'focus'

    });


    slider.$focusSlider.slider({

        css3: true,

        js: false,

        animation: 'fade', // fade  slide

        activeIndex: 0,

        interval: 0

    });



    // todays-slider

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

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

        imgLoader.loadImgs($(elem).find('.slider-img'),success,function ($img,url) {

            $img.attr('src','img/todays-slider/placeholder.png');

        });

    });


    slider.$todaysSlider.loadUtil({

        container:   slider.$todaysSlider,

        totalItemNum:  slider.$todaysSlider.find('.slider-img').length,

        triggerEvent: 'slider-show',

        id: 'todays'

    });

    slider.$todaysSlider.slider({

        css3: true,

        js: false,

        animation: 'fade', // fade  slide

        activeIndex: 0,

        interval: 0

    });


    //floor

    var floor ={};

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


    // 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(1);

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

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

    //         }

    //     });

    //

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

    //         // 按需加载

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

    //         $imgs.each(function (_, el) { // _ 相当占位,不使用该参数。

    //             var $img = $(el);

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

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

    //                 items[index] = 'loaded';

    //                 loadedItemNum++;

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

    //                 if (loadedItemNum === totalItemNum) {

    //                     // 全部加载完毕

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

    //                 }

    //             }, function (url) {

    //                 console.log('从' + url + '加载图片失败');

    //                 // 多加载一次

    //                 // 显示备用图片

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

    //             });

    //         });

    //     });

    //

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

    //         console.log('tab-itemsLoaded');

    //         // 清除事件

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

    //     });

    // }


    // $floor.each(function (_,elem) {

    //    lazyLoadFloorImgs($(elem));

    // });

    //

    // $floor.tab({

    //     event: 'mouseenter', // mouseenter或click

    //     css3: false,

    //     js: false,

    //     animation: 'fade',

    //     activeIndex: 0,

    //     interval: 0,

    //     delay: 0

    // });


    floor.floorData = [{

        num: '1',

        text: '服装鞋包',

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

        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: ['热门', '国际大牌', '国际名品'],

        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: ['热门', '品质优选', '新机尝鲜'],

        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: ['热门', '大家电', '生活电器'],

        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: ['热门', '电脑/平板', '潮流影音'],

        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 lazyLoadFloor () {

    //     var items = {},

    //         loadedItemNum = 0,

    //         totalItemNum = $floor.length,

    //         loadItemFn = null;

    //

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

    //         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';

    //         loadedItemNum++;

    //         if (loadedItemNum === totalItemNum) {

    //             // 全部加载完毕

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

    //         }

    //        setTimeout(function () {

    //            $elem.html(html);

    //

    //            lazyLoadFloorImgs($elem);

    //

    //            $elem.tab({

    //                event: 'mouseenter', // mouseenter或click

    //                css3: false,

    //                js: false,

    //                animation: 'fade',

    //                activeIndex: 0,

    //                interval: 0,

    //                delay: 0

    //            });

    //        },1000);

    //     });

    //

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

    //         console.log('floors-itemsLoaded');

    //         // 清除事件

    //         $doc.off('floor-show',loadItemFn);

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

    //     });

    // }


    // {

    //     container: $elem

    //     totalItemNum:5

    //     triggerEvent: 'floor-show'

    //     id: 'floor'

    // }


    var imgLoader={};

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

        var image = new Image();

        image.onerror = function() {

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

        };

        image.onload = function() {

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

        };

        // image.src = url;

        setTimeout(function() {

            image.src = url;

        }, 1000);

    };

    imgLoader.loadImgs = function($img,success,fail) {


        $imgs.each(function (_, el) { // _ 相当占位,不使用该参数。

            var $img = $(el);

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

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

                success();

            }, function (url) {

                console.log('从' + url + '加载图片失败');

                // 多加载一次

                // 显示备用图片

               fail($img, url);

            });

        });

    };


    var lazyLoad = {};

    lazyLoad.loadUtil = function (options) {

        var items = {},

            loadedItemNum = 0,

            loadItemFn = null,

            $elem = options.container,

            id = options.id;


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

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

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

                    items[index] = 'loaded';

                    loadedItemNum++;

                    if (loadedItemNum === options.totalItemNum) {

                        // 全部加载完毕

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

                    }

                }]);

            }

        });

        //全部加载完后

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

            console.log(id +'-itemsLoaded');

            // 清除事件

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


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

        });

    };


    floor.buildFloor = function (floorData) {

        var html = '';


        html += '<div class="container">';

        html += floor.buildFloorHead(floorData);

        html += floor.buildFloorBody(floorData);

        html += '</div>';


        return html;

    };

    floor.buildFloorHead = function (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;

    }

    floor.buildFloorBody = function (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" data-src="img/floor/' + floorData.num + '/' + (i + 1) + '/' + (j + 1) + '.png" class="floor-img"/></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;

    };



    //判断是否出现在可视区范围内

    floor.$win = $(window);

    floor.$doc = $(document);

    //判断是否在可视区内

    lazyLoad.isVisible = function ($elem) {

        var $win = floor.$win;


       return ($win.height() + $win.scrollTop() > $elem.offset().top) && ($win.scrollTop()< $elem.offset().top + $elem.height());

    };


  floor.timeToShow = function() {

      console.log('time to show');

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

          if (lazyLoad.isVisible($(elem))) {

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

          }

      });

  };


    //绑定滚动和窗口事件

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


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

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

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

        });

    });

        // 加载

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

        var html = floor.buildFloor(floor.floorData[index]),

            $elem = $(elem);

            success();


            setTimeout(function () {

                $elem.html(html);


                lazyLoad.loadUtil({

                    container: $elem,

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

                    triggerEvent: 'tab-show',

                    id: 'floor'

                });


                $elem.tab({

                    event: 'mouseenter', // mouseenter或click

                    css3: false,

                    js: false,

                    animation: 'fade',

                    activeIndex: 0,

                    interval: 0,

                    delay: 0

                });

            }, 1000);

    });

     //收尾工作

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

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

    });


    lazyLoad.loadUtil({

        container:  floor.$doc,

        totalItemNum:  floor.$floor.length,

        triggerEvent: 'floor-show',

        id: 'floors'

    });

    floor.timeToShow();


    // var $focusSlider = $('#focus-slider');

    // $focusSlider.items = {};

    // $focusSlider.loadedItemNum = 0;

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

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

    //     console.log(1);

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

    //         $focusSlider.trigger('slider-loadItem', [index, elem]);

    //     }

    // });

    // $focusSlider.on('slider-loadItem', function(e, index, elem) {

    //         // 按需加载

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

    //         $imgs.each(function(_, el) { // _ 相当占位,不使用该参数。

    //                 var $img = $(el);

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

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

    //                     $focusSlider.items[index] = 'loaded';

    //                     $focusSlider.loadedItemNum++;

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

    //                     if ($focusSlider.loadedItemNum === $focusSlider.totalItemNum) {

    //                         // 全部加载完毕

    //                         $focusSlider.trigger('slider-itemsLoaded');

    //                     }

    //                 }, function(url) {

    //                     console.log('从' + url + '加载图片失败');

    //                     // 多加载一次

    //                     // 显示备用图片

    //                     $img.attr('src', '../img/focus-slider/placeholder.png');

    //                 });

    //

    //             }

    //

    //

    //         });

    //

    //     $focusSlider.on('slider-itemsLoaded', function(e) {

    //         console.log('itemsLoaded');

    //         // 清除事件

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

    //     });

    //

    //

    //     function loadImg(url, imgLoaded, imgFailed) {

    //         var image = new Image();

    //         image.onerror = function() {

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

    //         }

    //         image.onload = function() {

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

    //         };

    //         // image.src=url;

    //         setTimeout(function() {

    //             image.src = url;

    //         }, 1000);

    //

    //     }

    //

    //

    //     $focusSlider.slider({

    //         css3: true,

    //         js: false,

    //         animation: 'fade', // fade  slide

    //         activeIndex: 0,

    //         interval: 0

    //     });

    //

    //

    //

    // todays-slider

    // var $todaysSlider = $('#todays-slider');

    // $todaysSlider.items = {};

    // $todaysSlider.loadedItemNum = 0;

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

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

    //     console.log(1);

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

    //         $todaysSlider.trigger('slider-loadItem', [index, elem]);

    //     }

    // });

    // $todaysSlider.on('slider-loadItem', function(e, index, elem) {

    //     // 按需加载

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

    //     $imgs.each(function(_, el) { // _ 相当占位,不使用该参数。

    //         var $img = $(el);

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

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

    //             $todaysSlider.items[index] = 'loaded';

    //             $todaysSlider.loadedItemNum++;

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

    //             if ($todaysSlider.loadedItemNum === $todaysSlider.totalItemNum) {

    //                 // 全部加载完毕

    //                 $todaysSlider.trigger('slider-itemsLoaded');

    //             }

    //         }, function(url) {

    //             console.log('从' + url + '加载图片失败');

    //             // 多加载一次

    //             // 显示备用图片

    //             $img.attr('src', '../img/focus-slider/placeholder.png');

    //         });

    //     });

    //

    // });

    //

    // $todaysSlider.on('slider-itemsLoaded', function(e) {

    //     console.log('itemsLoaded');

    //     // 清除事件

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

    // });

    //

    //

    // function loadImg(url, imgLoaded, imgFailed) {

    //     var image = new Image();

    //     image.onerror = function() {

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

    //     }

    //     image.onload = function() {

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

    //     };

    //     // image.src=url;

    //     setTimeout(function() {

    //         image.src = url;

    //     }, 1000);

    //

    // }

    //

    //

    // $todaysSlider.slider({

    //     css3: true,

    //     js: false,

    //     animation: 'fade', // fade  slide

    //     activeIndex: 0,

    //     interval: 0

    // });


})(jQuery);

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

写回答

1回答

好帮手慕夭夭

2019-12-08

同学你好,代码中的问题与修改如下:

1.lazyLoad没有定义就使用了,会报错。这是因为代码中,定义lazyLoad的代码放的太靠后,建议移到上面、示例:

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

2.slider.$todaysSlider.loadUtil不对,没有定义这个方法,应该改为如下

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

3.img少了个s

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

4.loadItem少了一个s

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

另外, 因为没有你的html,css文件,老师还要的源码进行测试,如果修改之后还有问题,建议创建新的问题,把全部的代码粘贴到问答区,以便老师准确高效的为你指导。

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

0

0 学习 · 14456 问题

查看课程