1 jQuery

jQuery

1. jQuery 概述

1.1 jQuery 概念

jQuery 是一个快速、简洁的 JavaScript 库,其设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。
j 就是 JavaScript; Query 查询; 意思就是查询js,把js中的DOM操作做了封装,我们可以快速的查询使用里面的功能。
jQuery 封装了 JavaScript 常用的功能代码,优化了 DOM 操作、事件处理、动画设计和 Ajax 交互。
学习jQuery本质: 就是学习调用这些函数(方法)。\njQuery 出现的目的是加快前端人员的开发速度,我们可以非常方便的调用和使用它,从而提高开发效率。

1.2 jQuery 的优点

  • 轻量级。核心文件才几十kb,不会影响页面加载速度
  • 跨浏览器兼容。基本兼容了现在主流的浏览器
  • 链式编程、隐式迭代
  • 对事件、样式、动画支持,大大简化了DOM
  • 操作支持插件扩展开发。有着丰富的第三方的插件,例如:树形菜单、日期控件、轮播图等
  • 免费、开源
  • jQuery 的下载地址
    官网地址: https://jquery.com/

1.3 jQuery 的入口函数

  1. $(function()){...}此处是页面DOM加载完成的入口
  2. $(document).ready(function(){...})

(1)等着 DOM 结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,jQuery 帮我们完成了封装。
(2)相当于原生 js 中的 DOMContentLoaded。
(3)不同于原生 js 中的 load 事件是等页面文档、外部的 js 文件、css文件、图片加载完毕才执行内部代码。
(4)更推荐使用第一种方式。

1.4 jQuery 顶级对象

  1. $ 是 jQuery 的别称,在代码中可以使用 jQuery 代替 $,但一般为了方便,通常都直接使用 $ 。
  2. $ 是jQuery 的顶级对象, 相当于原生JavaScript中的 window。把元素利用$包装成jQuery对象,就可以调用jQuery 的方法。
jQuery(function() {
  // alert(11)
  // $('div').hide();
  jQuery('div').hide();
});

1.5 jQuery 对象和 DOM 对象

DOM 对象与 jQuery 对象之间是可以相互转换的

  1. DOM 对象转换为 jQuery 对象:$(DOM对象)
$(div)
  1. jQuery 对象转换为 DOM 对象(两种方式)
  • $('div')[index] index是索引号
  • $('div').get[index]index是索引号
<!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>
    <script src="jquery.min.js"></script>
  </head>

  <body>
    <video src="mov.mp4" muted></video>
    <script>
      // 1. DOM对象转换为 jQuery对象
      // (1) 我们直接获取视频,得到就是jQuery对象
      // $('video');
      // (2) 我们已经使用原生js 获取过来 DOM对象
      var myvideo = document.querySelector('video');
      // $(myvideo).play();  jquery里面没有play 这个方法
      // 2.  jQuery对象转换为DOM对象
      // myvideo.play();
      $('video')[0].play()
      $('video').get(0).play()
    </script>
  </body>

</html>

jQuery常用API

2.1 jQuery 选择器

2.1.1 jQuery 基础选择器

名称用法
ID选择器$(“id”)
全选选择器$(“*”)
类选择器$(“.class”)
标签选择器$(‘div’)
并集选择器$(“div,p,li”)
交集选择器$(“li.current”)

2.1.2 jQuery层级选择器

名称用法/描述
子代选择器$(“ul>li”) 使用>号, 获取亲儿子层级的元素,注意,并不会获取孙子层级的元素
后代选择器$(“ul li”) 使用空格,获取url下的所有li元素,包括孙子等

2.1.3 jQuery 设置样式

$('div').css('属性''值')

2.1.4 jQuery隐式迭代(重要)

遍历内部 DOM 元素(伪数组形式存储)的过程就叫做隐式迭代
简单理解:给匹配到的所有元素进行循环遍历,执行相应的方法,而不用我们再进行循环,简化我们的操作,方便我们调用。

<!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>
    <script src="jquery.min.js"></script>
  </head>
  
  <body>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <ul>
      <li>相同的操作</li>
      <li>相同的操作</li>
      <li>相同的操作</li>
    </ul>
    <script>
      // 1. 获取四个div元素 
      console.log($("div"));
      
      // 2. 给四个div设置背景颜色为粉色 jquery对象不能使用style
      $("div").css("background", "pink");
      // 3. 隐式迭代就是把匹配的所有元素内部进行遍历循环,给每一个元素添加css这个方法
      $("ul li").css("color", "red");
    </script>
  </body>
  
</html>

2.1.5 jQuery 筛选选择器()

在这里插入图片描述

<!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>
    <script src="jquery.min.js"></script>
  </head>
  
  <body>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <ul>
      <li>相同的操作</li>
      <li>相同的操作</li>
      <li>相同的操作</li>
    </ul>
    <script>
      // 1. 获取四个div元素 
      console.log($("div"));
      
      // 2. 给四个div设置背景颜色为粉色 jquery对象不能使用style
      $("div").css("background", "pink");
      // 3. 隐式迭代就是把匹配的所有元素内部进行遍历循环,给每一个元素添加css这个方法
      $("ul li").css("color", "red");
    </script>
  </body>
  
</html>

案例:新浪下拉菜单栏

<!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>
      * {
        margin: 0;
        padding: 0;
      }

      li {
        list-style-type: none;
      }

      a {
        text-decoration: none;
        font-size: 14px;
      }

      .nav {
        margin: 100px;
      }

      .nav>li {
        position: relative;
        float: left;
        width: 80px;
        height: 41px;
        text-align: center;
      }

      .nav li a {
        display: block;
        width: 100%;
        height: 100%;
        line-height: 41px;
        color: #333;
      }

      .nav>li>a:hover {
        background-color: #eee;
      }

      .nav ul {
        display: none;
        position: absolute;
        top: 41px;
        left: 0;
        width: 100%;
        border-left: 1px solid #FECC5B;
        border-right: 1px solid #FECC5B;
      }

      .nav ul li {
        border-bottom: 1px solid #FECC5B;
      }

      .nav ul li a:hover {
        background-color: #FFF5DA;
      }
    </style>
    <script src="jquery.min.js"></script>
  </head>

  <body>
    <ul class="nav">
      <li>
        < a href=" ">微博</ a>
        <ul>
          <li>
            < a href="">私信</ a>
          </li>
          <li>
            < a href="">评论</ a>
          </li>
          <li>
            < a href="">@我</ a>
          </li>
        </ul>
      </li>
      <li>
        < a href="#">微博</ a>
        <ul>
          <li>
            < a href="">私信</ a>
          </li>
          <li>
            < a href="">评论</ a>
          </li>
          <li>
            < a href="">@我</ a>
          </li>
        </ul>
      </li>
      <li>
        < a href="#">微博</ a>
        <ul>
          <li>
            < a href="">私信</ a>
          </li>
          <li>
            < a href="">评论</ a>
          </li>
          <li>
            < a href="">@我</ a>
          </li>
        </ul>
      </li>
      <li>
        < a href="#">微博</ a>
        <ul>
          <li>
            < a href="">私信</ a>
          </li>
          <li>
            < a href="">评论</ a>
          </li>
          <li>
            < a href="">@我</ a>
          </li>
        </ul>
      </li>
    </ul>
    <script>
      $(function() {
        // 鼠标经过
        $(".nav>li").mouseover(function() {
          // $(this) jQuery 当前元素  this不要加引号
          // show() 显示元素  hide() 隐藏元素
          $(this).children("ul").show();
        });
        // 鼠标离开
        $(".nav>li").mouseout(function() {
          $(this).children("ul").hide();
        })
      })
    </script>
  </body>

</html>

2.1.7 jQuery排他思想

想要多选一的效果,排他思想:当前元素设置样式,其余的兄弟元素清除样式。

<!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>
    <script src="jquery.min.js"></script>
</head>

<body>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <script>
        $(function () {
            // 1. 隐式迭代 给所有的按钮都绑定了点击事件
            $("button").click(function () {
                // 2. 当前的元素变化背景颜色
                $(this).css("background", "pink");
                // 3. 其余的兄弟去掉背景颜色 隐式迭代
                $(this).siblings("button").css("background", "");
            });
        })
    </script>
</body>

</html>

案例:淘宝服饰精品案例
案例分析:

  1. 核心原理:鼠标经过左侧盒子某个小li,就让内容区盒子相对应图片显示,其余的图片隐藏。
  2. 需要得到当前小li 的索引号,就可以显示对应索引号的图片
  3. jQuery 得到当前元素索引号 $(this).index()\n中间对应的图片,可以通过 eq(index) 方法去选择
  4. 显示元素 show() 隐藏元素 hide()
<!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>
        *{
            margin: 0;
            padding: 0;
            font-size: 12px;
        }
        ul {
            list-style: none;
        }
        a {
            text-decoration: none;
        }
        .wrapper {
            width: 250px;
            height: 248px;
            margin: 100px auto 0;
            border: 1px solid pink;
            border-right: 0;
            overflow: hidden;
        }
        #left,
        #content {
            float: left;
        }
        #left li a {
            display: block;
            width: 48px;
            height: 27px;
            border-bottom: 1px solid pink;
            line-height: 27px;
            text-align: center;
            color: black;
        }
        #left li a:hover {
            background-color: red;
        }
        #content {
            border-left: 1px solid pink;
            border-right: 1px solid pink;
        }
    </style>
    <script src="jquery.min.js"></script>
    <script>
        $(function(){
            //1.鼠标经过(mouseover)id是left的盒子里面的li
            $('#left li').mouseover(function(){
                //2.得到当前对应的li的索引号 $(this).index()
                var index = $(this).index();
                //3.显示 show() id是content的盒子里面对应的索引号的div
                $('#content div').eq(index).show();
                //4.隐藏 hide() 其他id是content的盒子里面的div
                $('#content div').eq(index).siblings('div').hide();
            });
        });
    </script>
</head>
<body>
    <div class="wrapper">
        <ul id="left">
            <li><a href="#">女靴</a></li>
            <li><a href="#">雪地靴</a></li>
            <li><a href="#">冬裙</a></li>
            <li><a href="#">呢大衣</a></li>
            <li><a href="#">毛衣</a></li>
            <li><a href="#">棉服</a></li>
            <li><a href="#">女裤</a></li>
            <li><a href="#">羽绒服</a></li>
            <li><a href="#">牛仔裤</a></li>
        </ul>
        <div id="content">
            <div>
                <a href="#"><img src="images/1.jpeg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/2.jpeg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/3.jpeg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/4.jpg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/5.jpg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/6.jpeg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/7.jpg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/8.jpg" width="200" height="250"/></a>
            </div>
            <div>
                <a href="#"><img src="images/9.jpeg" width="200" height="250"/></a>
            </div>
        </div>
    </div>
</body>
</html>

2.1.8 链式编程

$(this).css('color', 'red').sibling().css('color', '');

使用链式编程一定注意是哪个对象执行样式.

<!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>
    <script src="jquery.min.js"></script>
  </head>

  <body>
    woshi body 的文字
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <script>
      $(function () {
          // 1. 隐式迭代 给所有的按钮都绑定了点击事件
          $("button").click(function () {
          // 2. 让当前元素颜色变为红色
          $(this).css("color", "red");
          // 3. 让其余的姐妹元素不变色 
          $(this).siblings().css("color", "");
          // 链式编程
          $(this).css("color", "red").siblings().css("color", "");
          // 我的颜色为红色, 我的兄弟的颜色为空
          // $(this).siblings().css('color', 'red');
          // 我的兄弟变为红色  ,我本身不变颜色
          $(this).siblings().parent().css('color', 'blue');
          // 最后是给我的兄弟的爸爸 body 变化颜色 

        });
      })
    </script>
  </body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值