jQuery
js库:即library,封装好的函数。里面有很多预先封装好的方法。
jQuery就是为了更方便快速操作DOM,里面封装了很多方法,后续用jQuery对象调用这些方法即可。
学习jQuery就是学习调用里面封装的函数,其优化了DOM操作、事件处理、动画设计和Ajax交互。基本兼容了主流浏览器。链式编程、隐式迭代、支持插件拓展开发,轻量、免费、开源。
其宗旨就是:写得少,做的多。

下载地址:https://jquery.com/

推荐下载3.X版本。


点击后直接鼠标右键**另存页面为…**即可,最后将下载下来的文件引入项目中。
<body>
<script>
// $('div').hide();
// 1.等着页面DOM加载完毕再去执行js代码
// $(document).ready(function() {
// $('div').hide();
// })
// 2.等着页面DOM加载完毕再去执行js代码
$(function() {
$('div').hide();
})
</script>
<div>114514</div>
</body>
$(function() { ......//DOM加载完成的入口(推荐) })
- 1
- 2
- 3
$(document).ready(function() { ......//DOM加载完成的入口 })
- 1
- 2
- 3

$$是jQuery 别称,在代码中$和jQuery和等价,为了方便都是$。
$是jQuery的顶级对象,相当于原生js中的window,元素通过$包装成jQuery对象,调用jQuery属性和方法。
<script>
// 1. $ 是jQuery的别称(别名)
// $(function() {
// alert(11)
// });
//jQuery和$二者可互换,方便起见一般都是$
jQuery(function() {
// alert(11)
// $('div').hide();hide为jQuery封装的方法;
jQuery('div').hide();
});
</script>
jQuery对象和DOM对象
用原生js获取来的对象是DOM对象,用jQuery方法获取过来的对象是jQuery对象。
jQuery 对DOM的原生方法进行了封装,jQuery 对象只能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 属性和方法。
<script>
//DOM对象,用原生js获取
var div = document.querySelector('div');
console.dir(div);
// $('div')是一个jQuery 对象
$('div');
console.dir($('div'));
</script>
控制台输出:

jQuery 对象只能使用 jQuery 属性和方法。例如:
衔接上述代码:
div.style.display='none';//是原生js方法,DOM对象可调用但:$(‘div’).style.display=‘none’;//这句代码就是错的,jQuery 对象只能使用jQuery 封装的方法。
所以,jQuery 只是对js常用属性和方法进行了封装。
DOM使用原生js方法和属性,jQuery 使用jQuery 属性和方法。
jQuery 转化为DOM(两种方法,index是索引号):
<script>
var div = document.querySelector('div');
$('div')[0].hide()
$('div').get(0).hide()
</script>
DOM转化为jQuery:
//直接获取元素即可
$('div');
原生 JS 获取元素方式很多,很杂,而且兼容性情况不一致,因此 jQuery 给我们做了封装,使获取元素统一标准。
$(“选择器”) //里面选择器直接写 CSS 选择器即可,但是要加引号
获取方式与原生js无异:


jQuery设置样式的方法:
$('div').css('属性', '值')
for instance:(Set the color for all the LI under UL)
$("ul li").css("color", "red");
隐式迭代:遍历内部 DOM 元素(伪数组形式存储)的过程。
例如:给UL里的很多LI都设置成红色字体
直接$(“ul li”).css(“color”, “red”);//隐式迭代自动遍历每一个LI。

for instance:(Get the first LI under UL)
$("ul li:first").css("color", "red");
jQuery 筛选方法

重点记住:
parent()//找亲爸
children()//找亲儿子
find()//找后代
siblings()//找兄弟
eq()
jQuery 可以使用 css 方法来修改简单元素样式。
- 参数只写属性名,则是返回属性值
$(this).css(''color'');
- 1
- 参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
$(this).css(''color'', ''red'');
- 1
- 参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号(对象写法,可以不带引号)
$(this).css({ "width": "400px", height: 400, "color":"white", "font-size":"20px" });
- 1
- 2
- 3
- 4
- 5
- 6
作用等同于以前的 classList,可以操作类样式, 注意操作类里面的参数不要加点。
- 添加类
$(“div”).addClass(''example'');
- 1
- 移除类
$(“div”).removeClass(''example'');
- 1
- 切换类
$(“div”).toggleClass(''example'');
- 1
Attention:类操作与className区别
原生 JS 中 className 会覆盖元素原先里面的类名。
jQuery 里面类操作只是对指定类进行操作,不影响原先的类名。
可在API文档中查询具体用法:https://jquery.cuishifeng.cn/
jQuery 封装了很多动画效果,例如:

1.显示
//(1)speed:字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)。
//(2)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”。
//(3)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。
show([speed,[easing],[fn]]);//中括号表示可以省略此参数,无动画直接显示
2.隐藏
//(1)speed:字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)。
//(2)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
//(3)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
hide([speed,[easing],[fn]]);//中括号表示可以省略此参数,无动画直接显示
3.切换显示和隐藏
toggle([speed,[easing],[fn]];

参数意思与显示隐藏参数一致
1.下滑
slideDown([speed,[easing],[fn]];
2.上滑
slideUp([speed,[easing],[fn]];
3.滑动切换
slideToggle([speed,[easing],[fn]];
事件切换
//(1)over:鼠标移到元素上要触发的函数(相当于mouseenter)
//(2)out:鼠标移出元素要触发的函数(相当于mouseleave)
//(3)如果只写一个函数,则鼠标经过和离开都会触发它
hover([over,]out);
for instance:(The drop-down menu of the navigation bar).
实现效果:

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>Documenttitle>
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style-type: none;
}
a {
text-decoration: none;
font-size: 14px;
}
.nav {
margin: 0 auto;
height: 40px;
border-bottom: 1px solid red;
}
.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 red;
border-right: 1px solid red;
}
.nav ul li {
border-bottom: 1px solid red;
}
.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() {
......
})
script>
body>
html>
jQuery部分有多种写法:
- 上滑和下滑分别用鼠标离开和经过来实现
//鼠标经过,下滑 $(".nav>li").mouseover(function() { $(this).children("ul").slideDown(200); }); //鼠标离开,上滑 $(".nav>li").mouseout(function() { $(this).children("ul").slideUp(200); });
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 用上面说的事件切换来写
//事件切换 hover 就是鼠标经过和离开的复合写法,两个函数对应经过和离开。 $(".nav>li").hover(function() { $(this).children("ul").slideDown(200); }, function() { $(this).children("ul").slideUp(200); });
- 1
- 2
- 3
- 4
- 5
- 6
简化事件切换写法:只写一个函数,鼠标经过和鼠标离开都会触发这个函数
$(".nav>li").hover(function() { $(this).children("ul").slideToggle(); });
- 1
- 2
- 3
上述写法的bug:快速经过离开,导航动画等一个结束,另一个才开始

待解决:动画队列(动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。)
解决方法:停止排队
//(1)stop()方法用于停止动画或效果。
//(2)注意:stop()写到动画或者效果的前面,相当于停止结束上一次的动画。只执行最新的一次。
stop();
完整代码:
$(".nav>li").hover(function() {
// stop 方法必须写到动画的前面,结束上一次的动画
$(this).children("ul").stop().slideToggle();
});
就是透明度从0增加到1的变化。
//参数与上述一致
(1)speed:字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)。
(2)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(3)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。
1.淡入
fadeIn([speed,[easing],[fn]];
2.淡出
fadeOut([speed,[easing],[fn]];
3.淡入淡出切换
fadeToggle([speed,[easing],[fn]];
渐进方式调整到指定的不透明度
//opacity 透明度,取值0~1
fadeTo([[speed],opacity,[easing],[fn]];
//params: 想要更改的样式属性,以对象形式传递。属性名可以不用带引号,如果是复合属性则需要采
取驼峰命名法 borderLeft。其余参数都可以省略。
animate(params,[speed],[easing],[fn];