jQuery基础知识

jQuery基础知识

一、jQuery介绍

1.1JavaScript库

JQuery是JavaScript库,是一个封装好的特定的集合(方法和函数)。

简单理解:就是一个JS文件,对里面的原生JS进行了封装,存在在里面。

下载网址:jQuery -jquery 中文网

1.2jQuery的优点

  • 轻量级,文件较小,不会影响页面的加载速度

  • 基本兼容现在主流的浏览器

  • 链式编程、隐式迭代

  • 对事件、样式、动画支持,大大简化了DOM操作

  • 支持插件拓展开发。有丰富的第三方插件

  • 免费、开源

二、jQuery的基本使用

2.1jQuery的入口函数

语法:

 // 第一种: 简单易用。
 $(function () {   
     ...  // 此处是页面 DOM 加载完成的入口
 }) ; 
 ​
 // 第二种: 繁琐,但是也可以实现
 $(document).ready(function(){
    ...  //  此处是页面DOM加载完成的入口
 });

2.2jQuery中的顶级对象$

  1. $是 jQuery 的别称,在代码中可以使用 jQuery 代替,但一般为了方便,通常都直接使用 $ 。

  2. $是jQuery的顶级对象,相当于原生JavaScript中的 window。把元素利用$包装成jQuery对象,就可以调用jQuery 的方法。

2.3 jQuery 对象和 DOM 对象

  1. 用原生 JS 获取来的对象就是 DOM 对象

  2. jQuery 方法获取的元素就是 jQuery 对象。

  3. jQuery 对象本质是: 利用$对DOM 对象包装后产生的对象(伪数组形式存储)

注意

只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法

2.4jQuery 对象和 DOM 对象转换

语法:

 
// 1.DOM对象转换成jQuery对象,方法只有一种
 var box = document.getElementById('box');  // 获取DOM对象
 var jQueryObject = $(box);  // 把DOM对象转换为 jQuery 对象
 ​
 // 2.jQuery 对象转换为 DOM 对象有两种方法:
 //   2.1 jQuery对象[索引值]
 var domObject1 = $('div')[0]
 ​
 //   2.2 jQuery对象.get(索引值)
 var domObject2 = $('div').get(0)
  

三、jQuery选择器(重点)

3.1基础选择器

 $("选择器")   //  里面选择器直接写 CSS 选择器即可,但是要加引号 
名称用法描述
ID选择器$("#id")获取指定的ID元素
全选选择器$("*")匹配所有元素
类选择器$(".class")获取同一类class元素
标签选择器$("div")获取同一类标签的所有元素
并集选择器$("div,p,li")选取多个元素
交集选择器$("li.current")交集元素

注意

ID选择器需要在括号内加‘#’

类选择器需要在指定的元素前加‘.’(点)

标签选择器不需任何符号,直接写标签名字即可

并集选择器选取的时候,元素之间需要用‘,’逗号分隔

  $("th,td").css("border", "blue double 3px");

交集选择器:直接把多个选择器连在一起。同时满足多个条件时使用,之间用‘.’(点) 

$("input.txtBox#userName").css("border", "black none 0px").css("background-color", "lightgreen");
 $("input.txtBox").css("border", "black none 0px").css("background-color", "lightgreen");

相邻选择器:选择的是相邻的一个元素,使用”+“隔开

 $("#item1+li").css("color", "green");

同辈选择器:选择的是同一级别的元素,使用”~“隔开

 $("#item1+li~li").css("font-weight", "bold");

全选选择器:表示页面上的所有元素

 $("*").css("font", "微软雅黑").css("font-size", "11pt");

属性选择器:

 $("input[type='submit']").css("background-color", "red").css("color", "white");
 $("[id^='user']").css("font-size","20pt");

3.2层级选择器

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

子选择器:选择的是子元素,使用”>“分隔

 $("tr>th").css("background-color", "lightcyan");

后代选择器:选取的是子元素,使用” “(空格)隔开

  $("tr th").css("background-color", "lightcyan");

3.3筛选选择器

语法用法描述
:first$("li:first")获取第一个li元素
:last$("li:last")获取最后一个li元素
:eq(index)$("li:eq(2)")获取到的元素中,选择索引号为2的元素,索引号index从0开始
:odd$("li:odd")获取到的元素中,选择索引号为奇数的元素
:even$("li:even")获取到的元素,选择索引号为偶数的元素
 
<body>
     <ul>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
     </ul>
     <ol>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
         <li>多个里面筛选几个</li>
     </ol>
     <script>
         $(function() {
             $("ul li:first").css("color", "red");
             $("ul li:eq(2)").css("color", "blue");
             $("ol li:odd").css("color", "skyblue");
             $("ol li:even").css("color", "pink");
         })
     </script>
 </body>

3.4jQuery设置样式及排他思想

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

实例

 $("p").css("background-color","yellow");

设置多个CSS属性

 $("p").css({"background-color":"yellow","font-size":"200%"});

jQuery的排他思想

 // 想要多选一的效果,排他思想:当前元素设置样式,其余的兄弟元素清除样式。
 $(this).css(“color”,”red”);
 $(this).siblings(). css(“color”,””);

隐式迭代

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

链式编程

 // 链式编程是为了节省代码量,看起来更优雅。
 $(this).css('color', 'red').sibling().css('color', ''); 

3.5案例 淘宝服饰

    
 <script src="jquery.min.js"></script>
     <script>
         $(function () {
             // 1. 鼠标经过左侧的小li 
             $("#left li").mouseover(function () {
                 // 2. 得到当前小li 的索引号
                 var index = $(this).index();
                 console.log(index);
                 // 3. 让我们右侧的盒子相应索引号的图片显示出来就好了
                 $("#content div").eq(index).show();
                 // 4. 让其余的图片(就是其他的兄弟)隐藏起来
                 $("#content div").eq(index).siblings().hide();
                 // 链式编程
                 // $("#content div").eq(index).show().siblings().hide();
             })
         })
     </script>

四、jQuery样式操作

4.1操作CSS方法

 
// 1.参数只写属性名,则是返回属性值
 var strColor = $(this).css('color');
 // 2.  参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
 $(this).css(''color'', ''red'');
 // 3.  参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号
 $(this).css({ "color":"white","font-size":"20px"});

4.2设置类样式方法

 // 1.添加类
 $("div").addClass("current");
 // 2.删除类
 $("div").removeClass("current");
 // 3.切换类
 $("div").toggleClass("current");

注意:

  1. 设置类样式方法比较适合样式多时操作,可以弥补css()的不足。

  2. 原生 JS 中 className 会覆盖元素原先里面的类名,jQuery 里面类操作只是对指定类进行操作,不影响原先的类名。

4.3案例 tab栏切换

 
$(function(){
     $("ul>li").mouseenter(function(){
         //给li添加下横线
         $(this).addClass('active').siblings('li').removeClass('active');
         var index = $(this).index();
         //显示对应的div
         $('.tab').eq(index).addClass('selected').siblings('div').removeClass('selected');
     })
   });

五、jQuery效果

  • 显示隐藏:show() / hide() / toggle() ;

  • 划入画出:slideDown() / slideUp() / slideToggle() ;

  • 淡入淡出:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ;

  • 自定义动画:animate() ;

  • 注意:

    动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。

    jQuery为我们提供另一个方法,可以停止动画排队:stop() ;

5.1显示与隐藏

1.显示语法规范:

 show([speed,[easing],[fn]])

2.显示参数

  • 参数可以省略,无动画直接显示

  • speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定的切换效果,默认是”swing“,可用参数"linear"

  • fn:回调函数 ,在动画完成时执行的函数,每个元素执行一次。

3.隐藏语法规范

 hide([speed,[easing],[fn]])

4.隐藏参数

  • 参数都可以省略, 与动画直接显示

  • speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定的切换效果,默认是”swing“,可用参数"linear"

  • fn:回调函数 ,在动画完成时执行的函数,每个元素执行一次。

5.切换语法规范

 toqqle([speed,[easing],[fn]])

6.切换函数

  • 参数都可以省略, 与动画直接显示

  • speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定的切换效果,默认是”swing“,可用参数"linear"

  • fn:回调函数 ,在动画完成时执行的函数,每个元素执行一次。

    建议:平时一般不带参数,直接隐藏即可

代码演示:

 <body>
     <button>显示</button>
     <button>隐藏</button>
     <button>切换</button>
     <div></div>
     <script>
         $(function() {
             $("button").eq(0).click(function() {
                 $("div").show(1000, function() {
                     alert(1);
                 });
             })
             $("button").eq(1).click(function() {
                 $("div").hide(1000, function() {
                     alert(1);
                 });
             })
             $("button").eq(2).click(function() {
               $("div").toggle(1000);
             })
             // 一般情况下,我们都不加参数直接显示隐藏就可以了
         });
     </script>
 </body>

5.2滑入滑出

滑入滑出动画,常见有三个方法:slideDown() / slideUp() / slideToggle() ;

1.下滑效果语法规范

 sildeDown([speed,[easing],[fn]])

2.下滑效果参数

  • 参数可以省略

  • speed三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

  • fn:回调参数,在动画完成时执行的函数,每个元素执行一次

3.上滑效果语法规范

 sildeUp([speed,[easing],[fn]])

4.上滑效果参数

  • 参数可以省略

  • speed三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

  • fn:回调参数,在动画完成时执行的函数,每个元素执行一次

5.滑动切换效果语法规范

 sildeToggle([speed,[easing],[fn]])

6.滑动切效果参数

  • 参数可以省略

  • speed三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

  • fn:回调参数,在动画完成时执行的函数,每个元素执行一次

代码演示

 
<body>
     <button>下拉滑动</button>
     <button>上拉滑动</button>
     <button>切换滑动</button>
     <div></div>
     <script>
         $(function() {
             $("button").eq(0).click(function() {
                 // 下滑动 slideDown()
                 $("div").slideDown();
             })
             $("button").eq(1).click(function() {
                 // 上滑动 slideUp()
                 $("div").slideUp(500);
             })
             $("button").eq(2).click(function() {
                 // 滑动切换 slideToggle()
                 $("div").slideToggle(500);
             });
         });
     </script>
 </body>

5.3淡入淡出

 淡入淡出动画,常见有四个方法:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ; 

1.淡入效果语法规范

 fadeIn([speed,[easing],[fn]])

2.淡入效果参数

  • 参数可以省略

  • speed三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

  • fn:回调参数,在动画完成时执行的函数,每个元素执行一次

2.淡出效果语法规范

 fadeOut([speed,[easing],[fn]])

3.淡出效果参数

  • 参数可以省略

  • speed三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000)

  • easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

  • fn:回调参数,在动画完成时执行的函数,每个元素执行一次

4.渐进方式调整到指定的不透明度

 fadeTo([speed,[opacity],[fn]])

5.效果参数

opacity:透明度必须写,取值0-1之间

speed:三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000),必须写

easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

fn:回调参数,在动画完成时执行的函数,每个元素执行一次

代码演示

 <body>
     <button>淡入效果</button>
     <button>淡出效果</button>
     <button>淡入淡出切换</button>
     <button>修改透明度</button>
     <div></div>
     <script>
         $(function() {
             $("button").eq(0).click(function() {
                 // 淡入 fadeIn()
                 $("div").fadeIn(1000);
             })
             $("button").eq(1).click(function() {
                 // 淡出 fadeOut()
                 $("div").fadeOut(1000);
             })
             $("button").eq(2).click(function() {
                 // 淡入淡出切换 fadeToggle()
                 $("div").fadeToggle(1000);
             });
             $("button").eq(3).click(function() {
                 //  修改透明度 fadeTo() 这个速度和透明度要必须写
                 $("div").fadeTo(1000, 0.5);
             });
         });
     </script>
 </body>

5.4自定义动画

1.语法:

 animate(params,[speed],[easing],[fn])

2.参数

params:想要更改的样式属性,以对象形式传递,必须写,属性名可以不用带括号,如果是符合属性则需要采取驼峰命名法border Left,其余参数都可以省略

speed:三种预定速度之一的字符串('slow','normal' or 'fast')或表示动画时长的毫秒数值(如:1000)

easing:(Optional)用来指定切换效果,默认是‘swing’,可用参数‘linear’

fn:回调参数,在动画完成时执行的函数,每个元素执行一次

代码演示

 <body>
     <button>动起来</button>
     <div></div>
     <script>
         $(function() {
             $("button").click(function() {
                 $("div").animate({
                     left: 500,
                     top: 300,
                     opacity: .4,
                     width: 500
                 }, 500);
             })
         })
     </script>
 </body>

5.5停止动画排队

停止动画排队的方法为:stop() ;

  • stop() 方法用于停止动画或效果。

  • stop() 写到动画或者效果的前面, 相当于停止结束上一次的动画。

总结:每次使用动画之前,先调用stop()方法

5.6事件切换

jQuery中为我们添加了一个新事件 hover() ; 功能类似 css 中的伪类 :hover 。

语法:

 hover([over,]out)     // 其中over和out为两个函数
  • over:鼠标移到元素上要触发的函数(相当于mouseenter)

  • out:鼠标移出元素要触发的函数(相当于mouseleave)

  • 如果只写一个函数,则鼠标经过和离开都会触发它

hover事件和停止动画排列案例

 
<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>
     </ul>
     <script>
         $(function() {
             // 鼠标经过
             // $(".nav>li").mouseover(function() {
             //     // $(this) jQuery 当前元素  this不要加引号
             //     // show() 显示元素  hide() 隐藏元素
             //     $(this).children("ul").slideDown(200);
             // });
             // // 鼠标离开
             // $(".nav>li").mouseout(function() {
             //     $(this).children("ul").slideUp(200);
             // });
             // 1. 事件切换 hover 就是鼠标经过和离开的复合写法
             // $(".nav>li").hover(function() {
             //     $(this).children("ul").slideDown(200);
             // }, function() {
             //     $(this).children("ul").slideUp(200);
             // });
             // 2. 事件切换 hover  如果只写一个函数,那么鼠标经过和鼠标离开都会触发这个函数
             $(".nav>li").hover(function() {
                 // stop 方法必须写到动画的前面
                 $(this).children("ul").stop().slideToggle();
             });
         })
     </script>
 </body>

5.7案例:手风琴效果

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Document</title>
     <style>
         * {
             padding: 0;
             margin: 0;
         }
         ul {
             list-style: none;
         }
         #box {
             width: 700px;
             height: 300px;
             margin: 100px auto;
             overflow: hidden;
         }
         li {
             float: left;
             width: 140px;
         }
     </style>
     <script src="js/jquery-1.12.2.min.js"></script>
     <script>
         $(function(){
             $("#box li").mouseover(function(){
                 $(this).css("width","500px");
                 $(this).siblings("li").css("width","50px");//siblings是遍历每个指定的括号内的元素
             });
             $("#box li").mouseout(function(){
                 $(this).css("width","");
                 $(this).siblings("li").css("width","");
             })
         }); 
     </script>
 </head>
 <body>
     <div id="box">
         <ul>
             <li><a href="#"><img src="images/1.jpg" alt=""width="600px" height="300px"></a></li>
             <li><a href="#"><img src="images/2.jpg" alt=""width="600px" height="300px"></a></li>
             <li><a href="#"><img src="images/3.jpg" alt=""width="600px" height="300px"></a></li>
             <li><a href="#"><img src="images/4.jpg" alt=""width="600px" height="300px"></a></li>
             <li><a href="#"><img src="images/5.jpg" alt=""width="600px" height="300px"></a></li>
         </ul>
     </div>
 </body>
 </html>
 ​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值