商品分类栏的隐藏部分内容显示不出来
来源:1-5 按需加载商品详情
键盘f11
2020-10-15 17:00:52
老师,您好,我现在遇到的问题就是隐藏部分内容的右侧部分显示不出来,这个隐藏部分显示是通过js来实现的,之前我也提过类似的问题,也同样的看了几次视频,按照老师的思路来写一样的代码格式
.on('dropdown-show',function(){
dropdown.loadOnce($(this),dropdown.createCategoryDetails);
})
.dropdown({
css3:false,
js:false
});
在这里输入代码
``` Dropdown.prototype.show=function(){
var self=this;
if(this.options.delay){
this.timer=setTimeout(function(){
_show();
},this.options.delay);
}else{
_show();
}
function _show(){
self.$elem.addClass(self.activeClass);
self.$layer.showHide('show');
}
}
css3._show = function($elem,className){
show($elem,function(){
$elem.off(trasition.end) .one(trasition.end,function(){
$elem.data('status','shown') .trigger('shown');
});
$elem .show();
setTimeout(function(){
$elem.removeClass(className);
},20);
})
}
上述三段代码,按照老师给的提示,已经都添加进去了,但是还是不能显示出来,是因为什么原因呢?程序代码没有报错。
我看了视频中老师代码所需要处理的文件是index.js,只需要通过这一个文件就可以实现商品分类display的block和none之间的切换,为什么我把index.js对应的搬过去不可以呢?
还有一部分的代码是在dropdown.js和showhide.js里面,感觉找来找去找不明白,就代码没有报错
理论来说,因为代码中涉及到json数据的调用,那么如果没有在php环境打开,是会有报错的,我这边打开报错也没有,说明代码没有实现json数据的请求
(function ($) {
//menu
'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);
};
$('.dropdown') .on('dropdown-show',function(e){
var $this=$(this),
dataLoad=$this.data('load');
})
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);
});
}
};
//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 += '<a href="###" target="_blank" class="link">' + data[i].items[j] + '</a>';
html+= '<a href="###" target="_blank" class="link">' +data[i].items[j]+ '</a>';
}
html +='</dd></dl>';
}
//setTimeout(function(){
$elem.find('.dropdown-layer').html(html);
//})
};
})(jQuery);
上述为我的index.js文件的代码,我参考老师的代码复制粘贴了其中一部分内容,为什么还是不行呢?主要是dldt这个html格式添加不上去
1回答
同学你好,老师在源码中测试同学粘贴的index.js文件中的代码,商品分类栏对应的隐藏部分可以正常显示出来。
不过同学粘贴的showHide.js文件中的代码,transition单词拼写错误,可以参考下图修改下

同学可以清除浏览器缓存再测试下,如果还有问题,可以将你写的代码全部粘贴过来(包括html、css、js),并将项目所在目录截图粘贴过来,代码就不要截图了,便于帮助同学测试代码,祝学习愉快~
相似问题
回答 2
回答 2