本地文件这里改写了一下,显示不出来

本地文件这里改写了一下,显示不出来

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

       //jQuery封装的获取json的方法  chrome不支持

        // $.getJSON('dropdown.json',function(data){

       //    console.log(data)

       // })

       var data=[

       {

          "url":"###",

          "name":"已买到的宝贝"

        },

        {

          "url":"###",

          "name":"我的足迹"

        },

        {

          "url":"###",

          "name":"我的优惠券"

        }

       ]

       var $layer=$(this).find('.dropdown-layer'),

       html='';

       for(const item of data){

         html+='<li><a href="'+item.url+'" target="_blank" class="menu-item">'+item.name+'</a></li>'

       }

       $layer.html(html)

     })

这里拼接的html直接放到ul下面是可以显示的,但是执行$layer.html(html)不显示

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好, 老师只是提供了一个方式, 代码可以完整一下哦, 老师这里以源码测试为例:

因为按需加载是用户的行为,所以我们可以提供一个方法,它的作用是更新当前下拉层的宽和高,当用户按需加载完成内容后,手动调用这个方法更新下拉层的宽和高。

  1. 在dropdown.js中init方法中添加一个函数用来更新下拉层的宽高, 第一遍将下拉层高度设置为auto, 让其由填充的内容撑开,然后在获取到填充内容后的高度, 赋值给下拉层,让其在页面中显示正常。

    http://img1.sycdn.imooc.com//climg/5d6f2758000124ce13610642.jpg

  2. 调用这个函数, 在请求到json数据后,将拼接的html结构添加到页面后调用这个函数更新下拉层的宽高。

    http://img1.sycdn.imooc.com//climg/5d6f27b000017c2712910735.jpg

  3. 将animation改成 slideUpDown测试效果

    http://img1.sycdn.imooc.com//climg/5d6f27d100018d4406080306.jpg

  4. 效果图, 也是可以正常显示的

    http://img1.sycdn.imooc.com//climg/5d6f27e20001dee501320128.jpg

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~

好帮手慕慕子 2019-09-04 09:44:31

同学你好, 由于浏览器限制加载本地的json文件, 需要将项目放在wamp下的www目录下,启动wamp, 从服务器打开html文件才可以使用$.getJSON方法加json文件

对于同学说的其他情况, 建议:将你写的全部代码粘贴过来, 便于老师准确高效的为你解决问题

祝学习愉快~~~

  • 提问者 Leonard_ #1
    就是视频里老师写的那个案例,dropdown.html里面的动画把fade改成slideUpDown就不能正常显示下拉菜单了
    2019-09-04 10:13:14
提问者 Leonard_ 2019-09-03 20:23:16

$(".dropdown").dropdown({

           event:'hover',

           css3: true,

           js: true,

           animation: 'fade',

           active:'menu',

           delay:0

       }); //调用插件

       $('#btn-show').on('click',function(){

         $(".dropdown").dropdown('show')

       })

       $('#btn-hide').on('click',function(){

         $(".dropdown").dropdown('hide')

       })

不知道哪里有问题,animation: 'fade',是可以显示的,但是fade改成slideUpDown,$layer的高度就会变成0,所以添加的li都不会显示,.dropdown-layer下样式有写overflow:hidden

提问者 Leonard_ 2019-09-03 20:05:05

控制台elements下三个li也确实放进去了,页面上也占了位置,但是都是空白

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师