1. jQuery下载
在使用jQuery之前,需要先下载jQuery的文件,在引入文件后才能使用
jQuery官网
版本介绍:
1x :兼容 IE 678 等低版本浏览器, 官网不再更新 2x :不兼容 IE 678 等低版本浏览器, 官网不再更新 3x :不兼容 IE 678 等低版本浏览器, 是官方主要更新维护的版本
1. 入口函数
在jQuery中,有两种常见的入口函数
// 第一种: 简单易用。
$(function () {
... // 此处是页面 DOM 加载完成的入口
}) ;
// 第二种: 繁琐,但是也可以实现
$(document).ready(function(){
... // 此处是页面DOM加载完成的入口
});
- 所谓的入口函数其实就是原生js中的
DOMContentLoaded
,但与load事件不同 - load事件在页面文档、外部js、css文件、图片加载完毕后再加载
- 而jQuery入口函数则是在 DOM 结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,
- jQuery 帮我们完成了封装。
2. $ (jQuery中的顶级对象)
- 在jQuery中,$和jQuery都是jQuery的顶级对象,它们的地址都是一样的
- $是 jQuery 的别称,在代码中可以使用 jQuery 代替,但一般为了方便,通常都直接使用 $ 。
- $是jQuery的顶级对象,相当于原生JavaScript中的 window。把元素利用$包装成jQuery对象,就可以调用jQuery 的方法。
3.jQuery 对象和 DOM 对象
使用 jQuery 方法和原生JS获取的元素是不一样的,总结如下 :
- 用原生 JS 获取来的对象就是 DOM 对象
- jQuery 方法获取的元素就是 jQuery 对象。
- jQuery 对象本质是: 利用$对DOM 对象包装后产生的对象(伪数组形式存储)。
注意: 只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法。
4. jQuery 对象和 DOM 对象转换
jQuery对象可以和DOM对象进行互换,因为原生js 比 jQuery 更大,原生的一些属性和方法 jQuery没有给我们封装. 要想使用这些属性和方法需要把jQuery对象转换为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)
总结:实际开发比较常用的是把DOM对象转换为jQuery对象,这样能够调用功能更加强大的jQuery中的方法。
5. jQuery基础选择器
$("选择器") // 里面选择器直接写 CSS 选择器即可,但是要加引号
名称 | 用法 | 描述 |
---|---|---|
ID选择器 | $("#id") |
获取指定的ID元素 |
全选选择器 | $("*") |
匹配所有的元素 |
类选择器 | $(".class") |
获取多个同类名元素 |
标签选择器 | $("div") |
获取同一类标签元素 |
并集选择器 | $("div,p,li") |
选取多个元素 |
交集选择器 | $("li.current") |
同时满足所有条件的元素 |
6. 层级选择器
名称 | 用法 | 描述 |
---|---|---|
子代选择器 | $("ul>li"); |
只选择亲子代元素,隔代子元素不会选择 |
后代选择器 | $("ul li"); |
选择所有指定的后代 |
7. 筛选选择器
筛选选择器,顾名思义就是在所有的选项中选择满足条件的进行筛选选择。常见如下 :
语法 | 用法 | 描述 |
---|---|---|
:first | $("li:first") |
获取第一个元素 |
:last | $("li:last") |
获取最后一个元素 |
:eq(index) | $("li:eq(2)") |
获取到的li元素中选择索引(index)为2的元素,索引从0开始 |
:odd | $("li:odd") |
获取索引为奇数的li元素 |
:even | $("li:even") |
获取索引为偶数的li元素 |
另外: jQuery中还有一些筛选方法,类似DOM中的通过一个节点找另外一个节点,父、子、兄以外有所加强。
语法 | 用法 | 说明 |
---|---|---|
parent() | $("li").parent(); |
查找父级 |
children(seletor) | $("ul").children("li") |
查找亲子代 |
find(selector) | $("ul").find("li") |
查找后代 |
siblings(selector) | $(".first").siblings("li") |
查找除自己以外的所有兄弟节点 |
nextAll([expr]) | $(".first").nextAll() |
查找当前元素后面的所有元素 |
prevtAll([expr]) | $(".first").prevtAll() |
查找当前元素前面的所有元素 |
hasClass(class) | $("div").hasClass("protected") |
检查当前元素是否含有特定类,有就返回true |
eq(index) | $("li").eq(2); |
等同$("li:eq(2)") ,index从0开始 |
8. jQuery CSS样式设置
$('div').css('属性', '值')
排他思想实现
$(this).css(“color”,”red”);
$(this).siblings(). css(“color”,””);//通过sibling选择其他所有兄弟清空样式
隐式迭代
// 遍历内部 DOM 元素(伪数组形式存储)的过程就叫做隐式迭代。
// 简单理解:给匹配到的所有元素进行循环遍历,执行相应的方法.
//而不用我们再进行循环,简化我们的操作,方便我们调用。
$('div').hide(); // 页面中所有的div全部隐藏,不用循环操作
链式编程
// 链式编程是为了节省代码量,看起来更优雅。
$(this).css('color', 'red').sibling().css('color', '');
9. jQuery 样式操作
jQuery中常用的样式操作有两种:css() 和 设置类样式方法
第一种方法:操作CSS
// 1.参数只写属性名,则是返回属性值
var strColor = $(this).css('color');
// 2.参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
$(this).css(''color'', ''red'');
// 3.参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号
$(this).css({ "color":"white","font-size":"20px"});
**注意**:css() 多用于样式少时操作,多了则不太方便。
第二种方法: 操作CSS类
// 1.添加类
$("div").addClass("current");
// 2.删除类
$("div").removeClass("current");
// 3.切换类
$("div").toggleClass("current");
注意:
- 设置类样式方法比较适合样式多时操作,可以弥补css()的不足。
- 原生 JS 中 className 会覆盖元素原先里面的类名,jQuery 里面类操作只是对指定类进行操作,不影响原先的类名
10. jQuery 效果(动画)
jQuery 给我们封装了很多动画效果,最为常见的如下
- 显示隐藏:show() / hide() / toggle() ;
- 划入画出:slideDown() / slideUp() / slideToggle() ;
- 淡入淡出:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ;
- 自定义动画:animate()
注意: 动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。 jQuery为我们提供另一个方法,可以停止动画排队:stop() ;
10.1 显示隐藏
三个方法:
- show()
- hide()
toggle()
//显示语法规范 show([speed,[easing],[fn]]) //speed 播放速度,可以设置毫秒数值 ,也可以通过预定的字符串“slow”、“normal”、“fast” //easing 播放效果,linear 线性播放 swing为默认 //fn 回调函数,动画执行完毕后再执行回调函数
//隐式语法规范 hide([speed,[easing],[fn]]) //参数类型与显示方式一致
//切换语法 隐藏时显示、显示时隐藏 toggle([speed,[easing],[fn]]) //依旧一致 //但一般用的时候都是只带播放速度
10.2 滑入滑出
三个方法:
fadeIn()
- fadeOut()
- fadeToggle()
- fadeTo()
//淡入语法规范 fadeIn([speed,[easing],[fn]])
//淡出语法规范 fadeOut([speed,[easing],[fn]])
//淡入淡出切换 fadeToggle([speed,[easing],[fn]])
注意://渐进方式调整指定的透明度 fadeTo([speed,opacity,[easing],[fn]])
- opacity 透明度必须填写,取值再0~1范围内
- speed必须填写(在fadeIn()里面)
11. 自定义动画 animate()
animate(params,[speed],[easing],[fn]) //除params以外其余参数可以省略
//params 为对象属性,是想要改变的样式属性,且必须填写,属性名可以不带引号
例子
<body>
<button>动起来</button>
<div></div>
<script>
$(function() {
$("button").click(function() {
$("div").animate({
left: 500,
top: 300,
opacity: .4,
width: 500
}, 500);
})
})
</script>
</body>
12. 停止动画 stop()
动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。
停止动画排队的方法为:stop() ;
- stop() 方法用于停止动画或效果。
stop() 写到动画或者效果的前面, 相当于停止结束上一次的动画。
总结: 每次使用动画之前,先调用 stop() ,在调用动画。
$(this) .stop() //停止上一次动画 .animate( { width: 224, }, 1000 ) .find(".small") .stop() //停止上一次动画 .fadeOut() .siblings(".big") .stop() //停止上一次动画 .fadeIn(); //鼠标移入效果
13. 事件切换 hover
hover([over,]out) // 其中over和out为两个函数
- over:鼠标移到元素上要触发的函数(相当于mouseenter)
- out:鼠标移出元素要触发的函数(相当于mouseleave)
- 如果只写一个函数,则鼠标经过和离开都会触发它
例子
$(function () {
$(".wrap li").hover( //事件切换,先填写移入触发事件
function () {
$(this).siblings().stop().fadeTo(400, 0.5);//设置兄弟节点淡出动画
},
function () {
$(this).siblings().stop().fadeTo(400, 1); //设置透明度动画
}
);
});