left.js和right.js
提问:
right.js中的init方法为什么没有执行? 尝试console.log data也出不来 alert 也没有反映。拿不到left.js 的left-item挂载的数据 menu-item 就无法渲染出来 求解决办法
left.js文件中的这个想拿到这个挂载的data数据 为什么拿不到?
19
收起
正在回答
4回答
同学你好,点击左侧列表,才会执行window.Right.refresh($target.data('itemData'));才会把数据传输到right.js,例如:
控制台:
建议:默认第一个是选中状态,这样不用点击,就可以拿到数据
祝学习愉快~
陈立天
2020-09-16 13:34:51
menu.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | <!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width,initial-scale=1.0,user-scalable=0,maximum-scale=1.0,minimum-scale=1" > < title >订单</ title > < script src = "../lib/jquery.js" ></ script > <!-- 适配方案 --> < script type = "text/javascript" > (function($) { 'use strict' var docEl = document.documentElement; // 解决dpr一边框像素问题 var dpr = window.devicePixelRatio || 1, viewPortEl = document.querySelector('meta[name="viewport"]'), maxWidth = 540, minWidth = 320; dpr = dpr >= 3 ? 3:(dpr >= 2 ? 2 :1); docEl.setAttribute('data-dpr',dpr); docEl.setAttribute('max-width', maxWidth); docEl.setAttribute('min-width', minWidth); var scale = 1/ dpr, content = 'width=device-width, initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' +scale+',user-scalable=no'; if(viewPortEl){ viewPortEl.setAttribute('content',content); }else{ viewPortEl = createElement('meta'); viewPortEl.setAttribute('name','viewport'); viewPortEl.setAttribute('content',content); document.head.appendChild(viewPortEl); } // 设置Rem的单位 function setRemUnit(){ // 获取rem基准值 var viewWidth = docEl.clientWidth; if(viewWidth && (viewWidth / dpr > maxWidth)) { viewWidth = maxWidth * dpr; }else if(viewWidth && (viewWidth / dpr < minWidth)){ viewWidth = minWidth * dpr; } var rem =viewWidth / 10; docEl.style.fontSize= rem + 'px'; } setRemUnit(); // 页面发生变化执行setRemUnit方法计算html根元素的font-size window.addEventListener('resize',setRemUnit); window.addEventListener('pageshow',setRemUnit); })(jQuery); </ script > < link rel = "stylesheet" href = "../lib/base.css" > < link rel = "stylesheet" href = "../commom/navHeader/navaHeader.css" > < link rel = "stylesheet" href = "../commom/headerTab/headerTab.css" > < link rel = "stylesheet" href = "./left/left.css" > </ head > < body > < div class = "nav" > < div class = "back-icon" ></ div > < h4 class = "title" >深圳麦当劳前海二餐厅</ h4 > </ div > < div class = "tab-bar" > <!-- js-loading--tab-item --> </ div > < div class = "menu-inner" > < div class = "left-bar" > < div class = "left-bar-inner" ></ div > </ div > < div class = "right-content" > < div class = "right-title" ></ div > < div class = "right-list" > < div class = "right-list-inner" ></ div > </ div > </ div > < div class = "shop-bar" > < div class = "choose-content" ></ div > < div class = "bottom-content" ></ div > </ div > < div class = "mask hide" ></ div > </ div > < script src = "./left/left.js" ></ script > < script src = "../commom/headerTab/headerTab.js" ></ script > < script src = "../menu/right/right.js" ></ script > </ body > </ html > |
right.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ( function ($) { 'use strict' var itemTmpl = '<div class="menu-item">' + '<img src=$picture>' + '<div class="menu-item-right">' + '<p class="item-title">$name</p>' + '<p class="item-decs">>$description</p>' + '<p class="item-zan">$praise_content</p>' + '<p class="item-price">>¥$min_price<span class=unit>$unit</p>' + '</div>' + '<div class="select-content"></div>' '</div>' function initRightTitle(){ } function initRightList(){ } function init(data){ alert(1); console.log( 'rightData:' ,data); initRightList(data.spus || []); initRightTitle(data.name || []); } window.Right = { refresh:init } })(jQuery); |
left.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | ( function ($) { 'use strict' var itemTmpl = '<div class="left-item">' + '<div class="itent-text">' + '$getItemContent' + '</div>' '</div>' function getItemContent(data){ if (data.icon){ return '<img class="item-icon" src=' +data.icon+ ' />' +data.name; } else { return data.name; } } function initContentList(list){ list.forEach( function (item,index){ var str = itemTmpl.replace( '$getItemContent' ,getItemContent(item)); // 挂载data数据到dom上 var $target = $(str) $target.data( 'itemData' ,item); console.log( '$targetData' , $( '.left-item' ).data( 'itemData' )); $( '.left-bar-inner' ).append(str); }) } function getList(){ $.get( '../json/food.json' , function (data){ console.log( 'foodData' ,data); window.food_spu_tags = data.data.food_spu_tags || []; initContentList(window.food_spu_tags); }) } function addClick(){ $( '.menu-inner' ).on( 'click' , '.leftitem' , function (e){ var $target = $(e.currentTarget); $target.addClass( 'active' ); $target.siblings.removeClass( 'active' ); window.Right.refresh($target.data( 'itemData' )); }); } ( function init(){ getList(); addClick(); })() })(jQuery); |
3.WebAPP开发与小程序
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧