jQuery 实现导航栏切换

简介: jQuery 实现导航栏切换

 我们学习原生 JS 时,写过一个图片框切换的案例,还记得采用的是什么方法做到导航栏和内容栏同步切换吗?用的是自定义属性的创建和获取,比较麻烦,我们还要使用for循环遍历绑定事件,但是学了 jQuery 之后,虽然只是入门,但以及可以完成一些基本的动态效果。




我们来对比一下二者的实现部分:


原生 JS:

       原生 JS 就是在循环给每一个 li 绑定鼠标移动事件时使用 setAttribute 设置一个自定义属性 index,然后绑定移动事件时使用 getAttribute 获取到该 li 绑定过的自定义属性值 index,再使用排他思想:干掉其他人,留下我自己,达到只留下对应 li 自定义属性值的图片


<script>

     var lis=document.querySelectorAll('li')

     var as=document.querySelectorAll('a')

     for(var i=0;i<lis.length;i++){

       lis[i].setAttribute('index',i)  //设置自定义属性

       lis[i].addEventListener('mouseover',function() {

          var index=this.getAttribute('index')  //获取自定义属性

          for(var i=0;i<as.length;i++){

            as[i].style.display='none';

          }

          as[index].style.display='block'

       })

     }

</script>

jQuery:

      jquery 的实现会太过于简单了!!,我们因为有隐式迭代,所以不需要循环绑定,使用 jQuery 的 index() 方法得到光标移动到的 li 的索引值,再直接使用排他思想,使用筛选方法中的 eq() 方法,得到光标移动对应索引值的图片,使用 jQuery 的 show() 方法使其显示,再使用 hide() 方法,使其兄弟级隐藏(siblings)


<script>

    $('.map-box li').mouseover(function(){

        var index=$(this).index()

        $('.img-box a').eq(index).show()

        $('.img-box a').eq(index).siblings().hide()

     })

</script>

完整代码:

<!DOCTYPE html>

<html lang="en">

<head>

 <meta charset="UTF-8">

 <meta http-equiv="X-UA-Compatible" content="IE=edge">

 <meta name="viewport" content="width=device-width, initial-scale=1.0">

 <title>Document</title>

 <style>

   *{

     padding: 0;

     margin: 0;

   }

   .out-box{

     box-sizing: border-box;

     width: 700px;

     height: 500px;

     margin: 100px auto;

   }

   .map-box{

     float: left;

     box-sizing: border-box;

     width: 200px;

     height: 500px;

     background-color: rgb(129, 129, 129);

   }

   .img-box{

     float: left;

     box-sizing: border-box;

     width: 500px;

     height: 500px;

     border: 1.5px solid;

     border-left: 0;

   }

   .map-box ul{

      width: 200px;

     box-sizing: border-box;

   }

   .map-box ul li{

     box-sizing: border-box;

     width: 200px;

     height: 100px;

     background-color: rgb(255, 230, 131);

     border: 1.5px solid;

     border-bottom: 0;

     list-style: none;

     text-align: center;

     line-height: 100px;

     font-size: 27px;

     font-weight: 800;

   }

   .map-box ul li:last-child{

     border-bottom:1.5px solid;

   }

   .map-box ul li:hover{

     background-color: rgb(202, 148, 0);

     color: aliceblue;

     border-color: black;

   }

   .img-box a{

     display: inline-block;

     display: none;

   }

   .img-box img{

     width: 498px;

     height: 498px;

     box-sizing: border-box;

   }

 </style>

 <script src="./jQuery.js"></script>

</head>

<body>

   <div class="out-box">

       <div class="map-box">

          <ul>

            <li>文峰塔</li>

            <li>羑里城</li>

            <li>岳飞庙</li>

            <li>殷墟</li>

            <li>文字博物馆</li>

          </ul>

       </div>

       <div class="img-box">

          <a href="javascript::" class="img1" style="display: block">

            <img src="./phpto/wenfeng.jpg" alt="" >

          </a>

          <a href="javascript::" class="img2">

           <img src="./phpto/youli.jpg" alt="">

         </a>

         <a href="javascript::" class="img3">

           <img src="./phpto/yuefei.jpg" alt="">

         </a>

         <a href="javascript::" class="img4">

           <img src="./phpto/yinxu.jpg" alt="">

         </a>

         <a href="javascript::" class="img5">

           <img src="./phpto/wenzi.jpg" alt="">

         </a>

       </div>

   </div>

   <script>

    $('.map-box li').mouseover(function(){

        var index=$(this).index()

        $('.img-box a').eq(index).show()

        $('.img-box a').eq(index).siblings().hide()

     })

   </script>

</body>

</html>


相关文章
|
8月前
|
JavaScript 前端开发
jQuery 页面顶部滚动中固定导航栏
jQuery 页面顶部滚动中固定导航栏
25 0
|
10月前
|
JavaScript
|
JavaScript
jQuery插件实现图片墙小案例
jQuery插件实现图片墙小案例
115 0
|
JavaScript 前端开发 CDN
HTML + jQuery 实现轮播图
HTML + jQuery 实现轮播图
243 0
HTML + jQuery 实现轮播图
|
JavaScript
Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
506 0
Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
|
JavaScript 安全 Windows
js或jquery实现页面打印可局部打印
js或jquery实现页面打印可局部打印
230 0
|
JavaScript
使用jquery中实现按回车触发按钮事件和点击提交按钮触发的是一个事件
使用jquery中实现按回车触发按钮事件和点击提交按钮触发的是一个事件
108 0
|
前端开发 JavaScript
【jquery ajax】实现文件上传提交
【jquery ajax】实现文件上传提交
235 0
【jquery ajax】实现文件上传提交
|
JavaScript
利用jquery的attr方法一行代码实现的简单的图片切换效果
利用jquery的attr方法一行代码实现的简单的图片切换效果
138 0
利用jquery的attr方法一行代码实现的简单的图片切换效果
|
JavaScript
jquery实现单击div切换背景,再次单击回到原来样式
jquery实现单击div切换背景,再次单击回到原来样式
169 0
jquery实现单击div切换背景,再次单击回到原来样式