老师这个楼层怎么封装
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .floor{ width: 1200px; margin: 0 auto; margin-bottom: 50px; } a{ text-decoration: none; } li{ list-style: none; } .floor-part{ width: 100%; height: 60px; } .floor-part div{ display: inline-block } .floor-part2{ float: right; margin-right: 20px; } .floor-part span{ font-size: 20px; height: 60px; cursor: pointer; line-height: 60px; } .floor-part1 span:nth-child(1){ width: 50px; height: 50px; border-radius: 50%; background: black; margin-right: 20px; color: white; } .floor-line{ width: 100%; height: 10px; background: red; } .floor-img{ width: 1200px; margin: 0 auto; height: 380px; } .floor-hide{ display: none; } .floor-img ul{ overflow: hidden; margin: 0 auto; margin-bottom: 30px; margin-top: 30px; } .floor-img ul li{ float: left; width: 16%; text-align: center } .floor-img ul li p:nth-child(3){ color: red; } </style> </head> <body> <div class="floor"> <div class="floor-part"> <div class='floor-part1'> <span>1F</span> <span>服装鞋包</span> </div> <div class='floor-part2'> <span>热卖</span> | <span>男装</span> | <span>女装</span> | </div> </div> <div class="floor-line"></div> <div class="floor-img"> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/2.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/3.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/4.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/5.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/6.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> </div> <div class="floor"> <div class="floor-part"> <div class='floor-part1'> <span>2F</span> <span>服装鞋包</span> </div> <div class='floor-part2'> <span>热卖</span> | <span>男装</span> | <span>女装</span> | </div> </div> <div class="floor-line"></div> <div class="floor-img"> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/2.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/3.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/4.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/5.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/6.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> </div> <div class="floor"> <div class="floor-part"> <div class='floor-part1'> <span>3F</span> <span>服装鞋包</span> </div> <div class='floor-part2'> <span>热卖</span> | <span>男装</span> | <span>女装</span> | </div> </div> <div class="floor-line"></div> <div class="floor-img"> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/2.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/3.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/4.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/5.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/6.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> </div> <div class="floor"> <div class="floor-part"> <div class='floor-part1'> <span>4F</span> <span>服装鞋包</span> </div> <div class='floor-part2'> <span>热卖</span> | <span>男装</span> | <span>女装</span> | </div> </div> <div class="floor-line"></div> <div class="floor-img"> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> <ul> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/1.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/2.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/3.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/4.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> <div class="floor-img floor-hide"> <ul> <li> <img src="素材/floor/5.jpg"> <p>服装</p> <p>¥65</p> </li> <li> <img src="素材/floor/6.jpg"> <p>服装</p> <p>¥65</p> </li> </ul> </div> </div> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script> var floorpart = $('.floor-part2 span'); console.log(floorpart) var floorimg = $('.floor-img') for (var t = 0; t < floorpart.length; t++) { floorpart.eq(t).attr('fl-data', t); floorpart.eq(t).click(function () { var numimg = $(this).attr('fl-data'); for (var k = 0; k < floorpart.length; k++) { floorimg.eq(k).hide() } floorimg.eq(numimg).show() } ) } // var floor = $('.floor'); // for (var y = 0; y < floor.length; y++) { // var floorpart = floor.eq(y).children('.floor-part2 span'); // console.log(floorpart) // var floorimg = floor.eq(y).children('.floor-img') // for (var t = 0; t < floorpart.length; t++) { // floorpart.eq(t).attr('fl-data', t); // floorpart.eq(t).click(function () { // var numimg = $(this).attr('fl-data'); // for (var k = 0; k < floorpart.length; k++) { // floorimg.eq(k).hide() // } // floorimg.eq(numimg).show() // } // ) // } // } </script> </body> </html>
下面注释那本来是想用父元素遍历来解决的,但是并不起效果。。。麻烦老师帮忙看一下
正在回答
你是一个按钻研的小朋友,从代码看出了你是一直在折腾代码,但是越是出不来越不能着急,你第二次的js中的问题有:
1、最外层的这个for循环,其实就是为了找出floor-img,找到它用得着用一个循环来做吗。直接var floorimg = $('.floor-img'); 不就有了吗?
2、总是从父元素里面找内容,有的东西直接就可以取到,直接用class选择器就拿到了,为什还要去绕一下呢,绕来绕去都把自己绕晕了。
3、当上面的一切都调整好之后,还存在一个问题,就是上条回复中我跟你说的,你点击当前的span,会显示其中的内容,但是其他楼层的都隐藏了,这个显然不符合要求,所以要通过当前被点击的元素,找到他的父元素,然后再找到对应的其他两个没有点击的元素进行内容的隐藏,$(this).parents(".floor").children(".floor-img").hide();
整体参考:
欢迎采纳!
同学你在提问的时候,一定要说明自己的需求哦,你要是先什么效果,这个一定要交代清楚,这样老师才能准确的为你找到问题。
你是要实现切换效果吗?如果是要实现切换的话,首先你没有注释掉的部分也是有问题的,你对照一下作业的效果视频,你的效果是当点击某一个选项的时候,其他所有的span都隐藏,这个操作显然是不合理的。正确的逻辑是,在本楼层中,点哪个哪个显示,其他的隐藏, 但是其他层是不受影响的。所以这里你可以单独的对每层去做隐藏显示的操作,用css的方式去做就可以了,可以用css的就不要用js,会更简单一些,通过控制显示属性,对每个选项控制隐藏显示,更通俗一点的说,当点击第二个的时候,给这个元素以及它下面的内容分别添加一个class,这两个class中分别定义的是按钮被选中时的样式,以及下面display:block,而其他的下面的内容都是默认display:none。
另外你说到的,通过父元素去找span是可以的,但是你不能通过floor去找span呀,你应该通过floor-part2去找span,通过floor去找span不是多次一举吗。
如果帮助到了你,欢迎采纳!
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星