老師檢查一下 是不是因为使用了this就可以不用定义eq($(this).index())呢

老師檢查一下 是不是因为使用了this就可以不用定义eq($(this).index())呢

<!DOCTYPE html>

<html>


<head>

    <meta charset="UTF-8" />

    <title>Document</title>

    <style type="text/css">

        .container {

            width: 240px;

            height: 185px;

            margin: 0 auto;

            overflow: hidden;

        }


        .conTitle {

            height: 50px;

        }


        nav {

            width: 25%;

            height: 50px;

            line-height: 50px;

            text-align: center;

            float: left;

            background-color: #000;

            font-weight: bold;

            color: #fff;

            cursor: pointer;

        }


        nav:hover {

            /* background-color: #ddd;

        color: #000; */

        }


        .content {

            position: relative;

        }


        .img1 {

            opacity: 1;

        }


        img {

            position: absolute;

            top: 0;

            left: 0;

            opacity: 0;

            width: 240px;

        }

    </style>

</head>


<body>

    <div class="container">

        <div class="conTitle">

            <nav>动漫</nav>

            <nav>动画</nav>

            <nav>vue</nav>

            <nav>小程序</nav>

        </div>

        <div class="content">

            <img class="img1" src="img/1.jpg" />

            <img class="img2" src="img/2.jpg" />

            <img class="img3" src="img/3.jpg" />

            <img class="img4" src="img/4.jpg" />

        </div>

    </div>

    <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>

    <script type="text/javascript">

        $(document).ready(function () {

            $("nav").click(function () {

                // 此处写代码

                // $(this).index();找到img当前的下标


                $("img")


.eq($(this)
                        .index())

                    .css({ "opacity": "1" })

                    .siblings()

                    .css({ "opacity": "0" });

                // 改变当前背景颜色

                $(this)

                    .css({ "backgroundColor": "skyblue" })

                    .siblings()

                    .css({ "backgroundColor": "#000" });

            });

        })

    </script>

</body>


</html>


正在回答 回答被采纳积分+1

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

2回答
好帮手慕慕子 2019-05-19 09:41:33

同学你好,选项卡这里是因为$(this)指向当前选中的选项卡nav。所以可以直接使用$(this)设置选中的背景为蓝色, 然后通过siblings()找到其他的选项卡将背景设置为黑色。

但是$(this)不可以直接表示图片, 所以需要先通过$(this).index()获得当前选卡的索引。 然后通过$(img).eq($(this).index())获取对应的图片显示出来,并将其他的图片隐藏起来,实现效果。

同学可以尝试输出一下$(this)和$(img).eq($(this).index())。查看一下输出结果哦

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

打印结果

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

可以自己下去测试一下, 加深理解

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

祝学习愉快~~~

好帮手慕慕子 2019-05-18 19:03:56

同学你好,请问你这里是想问为什么鼠标移入选项卡没有实现图片切换吗?如果是指这里的话, 那么是因为你这里写成了点击事件, 效果是鼠标移入事件。建议修改: 可以使用鼠标移入事件

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

另, 同学粘贴的代码中, js部分多了一个<br>标签。如果是粘贴的问题, 同学可以不用修改自己的代码,如果不是粘贴的问题, 建议同学删除了。示例:

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

如果同学指的不是这里, 可以详细的描述指的是哪里, 再次提问, 我们会继续为你解答的

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

祝学习愉快~~~


  • 提问者 尤尼酱 #1
    老师代码实现了 就是eq($(this).index())如果是使用了$(this)这个是不是就可以不用这个方法回答这个就行l,功能已经实现了,就是不懂原理
    2019-05-18 19:06:19
  • 好帮手慕慕子 回复 提问者 尤尼酱 #2
    你好,不可以哦, 两个要结合使用。 $(this)只是指当前选项卡nav $(this).index()表示当前选项卡的索引值。 使用$(img).eq($(this).index())才能找到当前选项卡对应的图片。 如果不是指这里的话, 可以将你想要实现的代码过来, 便于准确的定位和解决问题。祝学习愉快~~
    2019-05-18 19:17:16
  • 提问者 尤尼酱 回复 好帮手慕慕子 #3
    就是看到上面四个选项了 改变这个选中谁,谁的背景颜色就改变,那里我没用 eq($(this).index()也实现了效果
    2019-05-18 22:38:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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