访问不到dom元素
只有在渲染出左边的菜单项时才能访问到这个.category-item元素,但是就算是在dom加载完毕后,其他位置也依旧访问不到这个元素
相关代码:
(function(){
var itemTmpl='<div class="category-item">$getCategoryContent</div>'
function addEvent(){
//添加点击事件
$('.category').on('click','.category-item',function(){
$(this).addClass('active').siblings().removeClass('active')
choose($(this).data('itemData'))
})
}
function getCategoryContent(list){
// 渲染类目内容
if(list.icon.length!=0){
// 有icon
return '<img src='+list.icon+' /><span>'+list.name+'</span>'
}else{
return '<span>'+list.name+'</span>'
}
}
function initCategoryList(list){
// 渲染数据
list.forEach(function(item){
var str=itemTmpl
.replace('$getCategoryContent',getCategoryContent(item))//渲染类目内容
var $str=$(str)//转为jq对象
$str.data('itemData',item)//挂载数据
$('.category').append($str)
})
$('.category-item').first().click() //在这里能访问到.category-item ,就是左边那个菜单项,但是在其他位置获取不到菜单项
}
function getList(){
// 获取数据
$.get('../json/food.json',function(data){
var list=data.data.food_spu_tags//包含了每个类目以及类目下菜品
initCategoryList(list)
})
}
function init(){
getList()
addEvent()
}
init()
})()
8
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕久久
2021-01-25 11:17:31
同学你好,是想问,为什么初始时,右侧商品显示不出来吗?如果是的话,解答如下:
页面加载后,“ $('.category-item').first().click()”这句代码是可以正确执行的,该句代码执行后,正常应该渲染出右侧商品。同学的代码,之所以渲染不出来,是因为“ choose($(this).data('itemData'))”这句代码不正确。由于right.js中的代码,写在了一个自执行的匿名函数中,会形成一个独立的作用域,所以它里面的choose方法,在left.js中访问不到。所以在left.js中调用choose,根本不会执行right.js中的choose方法。
建议将right.js中的choose方法,挂载在全局对象window上,然后再在left.js中调用,如下:
同学参考上面修改一下。
如果不是这个问题,或者不会修改,建议新建一个问题,再具体描述下,并把right.js中的代码粘贴出来(相关代码都粘贴出来),老师再给你解答。
祝学习愉快!
3.WebAPP开发与小程序
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星