为什么只加载出了第一个DIV标签?
来源:5-4 自由编程
wss_BinAdam
2019-05-05 23:04:07
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .friendLink{ width: 100%; padding-top: 35px; } .friendLink .container{ width: 1200px; margin: 0 auto; border-top: 1px solid #d9dde1; height: 138px; } .friendLink-item{ height: 138px; width: 213px; padding-left: 36px; padding-right: 50px; text-align: left; } .friendLink-item p{ font-size: 15px; margin-top: 30px; line-height: 29px; color: #07111b; } .friendLink-item a{ font-size: 12px; line-height: 26px; color: #93999f; margin-right: 19px; display: inline-block; } .friendLink-item a:hover{ color: red; } .friendLink img{ display: block; margin: 0 auto; } </style> </head> <body> <!-- 友情链接区 --> <div class="friendLink"> <div class="container"> <img src="img/linkloading.gif" alt="" /> <!-- <div class="friendLink-item fl"> <p>消费者保障</p> <a href="javascript:;">保障范围</a ><a href="javascript:;">退货流程</a ><a href="javascript:;">服务中心</a ><a href="javascript:;">更多特色服务</a> </div> <div class="friendLink-item fl"> <p>新手上路</p> <a href="javascript:;">新手专区</a ><a href="javascript:;">消费警示</a ><a href="javascript:;">交易安全</a ><a href="javascript:;">24小时在线帮助</a ><a href="javascript:;">免费开店</a> </div> <div class="friendLink-item fl"> <p>付款方式</p> <a href="javascript:;">快捷支付</a ><a href="javascript:;">信用卡</a ><a href="javascript:;">余额包</a ><a href="javascript:;">蜜蜂花啊</a ><a href="javascript:;">货到付款</a> </div> <div class="friendLink-item fl"> <p>幕多多特色</p> <a href="javascript:;">手机幕多多</a ><a href="javascript:;">幕多多信</a ><a href="javascript:;">大众审评</a ><a href="javascript:;">B格指南</a> </div> --> </div> </div> <script> //两种判断是否有jquery库的写法: // window.jQuery || document.write('<script src="js/jquery.js"><' + '/script>') window.jQuery || document.write('<script src="js/jquery.js"><\/script>'); </script> <script type="text/javascript"> var FKData = [{ text: '消费者保障', items: [ [{ name: '保障范围' }, { name: '退货流程' }, { name: '服务中心' }, { name: '更多特色服务' }] ] },{ text: '新手上路', items: [ [{ name: '新手专区', }, { name: '消费警示', }, { name: '交易安全', }, { name: '24小时在线帮助', }, { name: '免费开店', }] ] },{ text: '付款方式', items: [ [{ name: '快捷支付', }, { name: '信用卡', }, { name: '余额包', }, { name: '蜜蜂花啊', }, { name: '货到付款', }] ] },{ text: '幕多多特色', items: [ [{ name: '手机幕多多', }, { name: '幕多多信', }, { name: '大众审评', }, { name: 'B格指南', }] ] }] var $FK = $('.friendLink'); var $win = $(window); var $doc = $(document); function lazyLoadFloorImgs() { var items = {}, loadedItemNum = 0, totalItemNum = FKData.length, loadItemFn=null; //判断加载 $doc.on('FK-show', loadItemFn = function(e, index, elem) { if (items[index] !== 'loaded') { $doc.trigger('FKs-loadItem', [index, elem]); } }); //开始加载 $doc.on('FKs-loadItem', function(e, index, elem) { var html = buildFK(FKData[index]), $elem = $(elem); items[index] = 'loaded'; loadedItemNum++; if (loadedItemNum === totalItemNum) { // 全部加载完毕 $doc.trigger('FKs-itemsLoaded'); } setTimeout(function(){ $elem.html(html); },1000); }); $doc.on('FKs-itemsLoaded', function(e) { console.log('FKs-itemsLoaded'); /*console.log(FKData.length); console.log(FKData[0].text);*/ // 清除事件 $doc.off('FK-show', loadItemFn); }); } function buildFK(FKData){ var html = ''; html+='<div class="container">'; for(var i=0; i<FKData.items.length; i++){ html+='<div class="friendLink-item fl">'; html+='<p>'+FKData.text+'</p>'; for(var j=0; j<FKData.items[i].length; j++){ html+='<a href="javascript:;">'+FKData.items[i][j].name+'</a>'; } html+='</div>'; } html+='</div>'; return html; } function isVisible($elem) { return ($win.height() + $win.scrollTop() > $elem.offset().top) && ($win.scrollTop() < $elem.offset().top + $elem.height()); } function timeToShow(){ $FK.each(function(index,elem){ if(isVisible($(elem))){ //console.log('121'); $doc.trigger('FK-show',[index,elem]); } }); } lazyLoadFloorImgs(); timeToShow(); </script> </body> </html>
为什么没有循环加载呢?
1回答
你好,是代码中只有一个friendLink元素的原因,使用each循环,index索引为0,所以只显示出来了一个,可以不使用index参数,如下:
拼接的地方重新写一下,现在是循环所有的数据:
测试出来是垂直显示的,因为每个div独占一行,可以添加浮动效果,如下:
效果:
可以测试下,祝学习愉快!
相似问题