一. jQuery介绍
1 什么是jQuery
jQuery是一个JavaScript函数库 ,可以处理兼容性问题,方便操作DOM
在早期的时候, 浏览器有很多不同的版本, 如果要做各种浏览器兼容是很头疼的事.
jQuery的出现解决了这个问题, 处理了兼容问题, 并提供了一系列简洁的, 统一的操作DOM的方式
jQuery的口号是”write less, do more”
2 jQuery包含哪些功能
jQuery库包含以下功能:
- HTML 元素选取
- HTML 元素操作
- CSS 操作
- HTML 事件函数
- JavaScript 特效和动画
- HTML DOM 遍历和修改
- AJAX
二. jQuery快速上手
1 jQuery的安装
jQuery的安装只需要引入jQuery的js文件即可, 常用的获取jquery.js文件的方式:
从 jquery.com 下载 jQuery 库
<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><!-- 本地引入 --><script src="./jquery.min.js"></script></head>
从 CDN 中载入 jQuery, 如从 jsDelivr 中加载 jQuery
<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><!-- 网络引入 推荐--><script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script></head>
这里, 更推荐大家使用CDN的方式引入
推荐的CDN公共资源网站
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
更多公共资源CDN可以参考: [菜鸟驿站-jQuery安装]
2 jQuery语法
jQuery最主要的作用就是操作DOM
步骤:
- 选择DOM元素
- 执行操作(事件, 属性, 效果…)
语法
$('选择器').action
示例
<script>//1. $是jQuery的别名//2. $也是jquery的顶级对象,后面所有的操作都是以$开头,因为jquery里面都是方法,方法是由对象调用($对象调用)//3. 使用$,可以使我们的书写更加简洁jQuery(function(){jQuery('div').hide(3000)})</script><div>慢慢的你就看不见我了....</div>
3 入口函数
当DOM元素加载完成后执行. 不用等所有内容(包括图片, css)加载完成
示例
$(function(){// 执行代码})
4 DOM对象与jQuery对象
dom对象和jquery对象区别
**dom对象是通过原生的js获取过来的.本质是操作元素的属性,不能调用jquery方法**<br />** jquery对象通过jquery方法获取过来的,本质是调用方法,不能使用dom的属性来操作元素**
DOM对象是通过原生的DOM API得到的对象
jQuery对象是通过$()得到的对象
两者可以使用方法不一样
<div>中国移动</div><script>//原生js对象 DOM对象 : 就是通过原生的js获取过来的对象var div = document.querySelector('div')console.log(div);//jquery对象 用jquery的方法获取过来的对象,var jqDiv = $('div')//本质:利用$对dom对象包装后产生的对象console.log(jqDiv);//S.fn.init 以伪数组的方式来存储的//dom对象只能使用原生js的方法,jquery对象也只能使用jquery对象得到方法//div.style.display='none'//div.hide(3000) dom对象不能调用jquery方法//jqDiv.style.display='none'//jquery对象不能使用dom的属性//结论:dom对象本质是修改元素的属性 jquery本质是在调用方法,不能混着使用</script>
dom对象和jquery对象的互转
**dom对象 ->jquery对象 jquery(dom对象)**<br />** jquery对象 -> dom对象 jquery对象[0] 或者 jquery对象.get(0)**
<div>中国移动</div><script>//1,dom对象转成jquery对象 $(dom对象)var divDOM = document.querySelector('div')//$(divDOM).hide(3000)//2,jquery对象转成dom对象 jquery对象[0] 或者 jquery对象.get(0)var jqDiv = $('div')console.log(jqDiv);//jquery对象console.log(jqDiv[0]);//dom对象//jqDiv[0].style.display='none'console.log(jqDiv.get(0));//dom对象jqDiv.get(0).style.display='none'</script>
<button>唐伯虎</button><script>/* 格式jq对象.事件名称(匿名函数) 事件触发之后要做的操作都写在匿名函数中*/$('button').click(function(){//alert('秋香')console.log(this);//注意 在jquery事件内部this代表的是dom对象,不是jquery对象})//鼠标移入事件$('button').mouseover(function(){console.log(111);})</script>
三. jQuery选择器
类似于CSS选择器, jQuery提供丰富的选择器, 可以快速准确的选出DOM元素.
1.选择器和筛选选择器
基本选择器<br /> #id值<br /> .class类名<br /> 元素名<br /> 复合选择器<br /> 并集选择器 a,b<br /> 交集选择器 a.b<br /> 后代选择器 a b<br /> 子选择器 a>b<br /> 筛选选择器<br /> :first<br /> :last<br /> :odd<br /> :even
| ID选择器 | $(‘#id’) | 获取指定ID的元素 |
|---|---|---|
| 类选择器 | $(‘.class’) | 获取一类class的元素 |
| 标签选择器 | $(‘div’) | 获取所有div元素 |
| 名称 | 用法 | 描述 |
| 后代选择器 | $(‘ul li’) | 获取ul下所有的li元素 |
| :first | $(‘li:first’) | 获取第一个li元素 |
| eq(index) | $(‘li:eq(2)’) | 获取索引号为2的元素, 从0开始 |
| find(selector) | $(‘ul’).find(‘li’) | 在ul下找所有的li元素 |
| eq(index) | $(‘li’).eq(2) | 相当于$(‘li:eq(2)’) |
| siblings(selector) | $(this).siblings() | 选择自己的兄弟元素, 不包括自己 |
| 属性选择器 | $(“a[target=’_blank’]”) | target 属性值等于 “_blank” 的 a元素 |
基本和后代选择器:
<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><script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script></head><body><div>我是 div</div><div class="nav">我是 nav div</div><ol><li>我是ol下的li</li><li>我是ol下的li</li><li>我是ol下的li</li><li>我是ol下的li</li></ol><script>//只选择第二个div$('.nav').css('background','red')//选择ol下面的li//这里面其实隐含了一个隐式迭代//隐式迭代就是把匹配的所有元素进行遍历,然后给每个元素都添加css这个方法$('ol li').css('background','red')console.log($('ol li'));//这个获取的是伪数组,里面有4个元素//让前面两个div都变成粉红色$('div').css('backgroundColor','pink')</script>
筛选选择器:
<ol><li>我是ol下面的li</li><li>我是ol下面的li</li><li>我是ol下面的li</li><li>我是ol下面的li</li><li>我是ol下面的li</li></ol><ul><li>我是ul下面的li</li><li>我是ul下面的li</li><li>我是ul下面的li</li><li>我是ul下面的li</li><li>我是ul下面的li</li></ul><script>//选中ol下的第一个li设置成红色$('ol li:first').css('color','red')//选中ol下第三个li设置成蓝色$('ol li:eq(2)').css('color','blue')//选中ul下奇数的li设置紫色(奇数索引)$('ul li:odd').css('color','purple')//选中ul下偶数的li设置成粉红色(偶数索引)$('ul li:even').css('color','pink')</script>
2.筛选方法(推荐使用)
jquery自带的筛选方法:
first( ) 第一个
last( ) 最后一个
parent( ) 父元素
children( ) 子元素
find( ) 后代元素
siblings( )其他兄弟元素
如果有筛选方法,优先使用筛选方法
<ol><li>我是ol下面的li</li><li>我是ol下面的li</li><li>我是ol下面的li</li><li>我是ol下面的li</li><li>我是ol下面的li</li></ol><ul><li>我是ul下面的li</li><li>我是ul下面的li</li><li>我是ul下面的li</li><li>我是ul下面的li</li><li>我是ul下面的li</li></ul><script>//选中ol下的第一个li设置成红色//$('ol li:first').css('color','red')$('ol li').first().css('background','red'); //推荐使用筛选方法来筛选元素//选中ol下第三个li设置成蓝色//$('ol li:eq(2)').css('color','blue')$('ol li').eq(2).css('background','blue'); //推荐使用筛选方法来筛选元素var index = 2;$('ol li').eq(index).css('background','pink');//筛选方法传递参数非常方便</script>
<div class="yeye"><div class="father"><div class="son">儿子</div></div></div><div class="nav"><p>我是外面的p</p><div><p>我是里面的p</p></div></div><script>//1.打印son的亲爸爸console.log($('.son').parent());//2,打印nav的亲儿子p//console.log($('.nav>p')); //传统选择器console.log($('.nav').children('p'));//jquery的筛选方法//3,打印nav下所有的p//console.log($('.nav p'));console.log($('.nav').find('p'));</script>
<ol><li>我是ol下的li</li><li>我是ol下的li</li><li class="item">我是ol下的li</li><li>我是ol下的li</li><li>我是ol下的li</li></ol><div class="current">中国移动</div><div>中国联通</div><script>//选中除第三个li以外的其他元素$('ol .item').siblings('li').css('background','pink')//判断是否有current类名console.log($('div').first().hasClass('current'));console.log($('div').last().hasClass('current'));</script>
3.选择器_排他思想和链式编程
<button>快速</button><button>快速</button><button>快速</button><button>快速</button><button>快速</button><button>快速</button><button>快速</button><script>//实现效果,关标点到哪个按钮上面,哪个按钮背景就变成粉红色,其他按钮背景不变//1,获取按钮对象,添加点击事件$('button').click(function(){//this就代表当前点击的按钮//1.当前按钮背景改成粉红色$(this).css('background','pink')//2,其他兄弟按钮背景颜色去掉$(this).siblings('button').css('background','')})</script>
<button>快速</button><button>快速</button><button>快速</button><button>快速</button><button>快速</button><button>快速</button><button>快速</button><script>//实现效果,关标点到哪个按钮上面,哪个按钮背景就变成粉红色,其他按钮背景不变//1,获取按钮对象,添加点击事件$('button').click(function(){//this就代表当前点击的按钮//1.当前按钮背景改成粉红色console.log($(this).css('background','pink'))//返回的是当前的对象,后面还可以继续调用方法console.log($(this));//2,其他兄弟按钮背景颜色去掉//$(this).siblings('button').css('background','');//链式编程$(this).css('background','pink').siblings('button').css('background','')})</script>
四. jQuery事件
1 什么是事件
当用户浏览网页时, 网页上一些可以交互的元素(按钮)对用户操作的反应就是事件.
比如
- 用户点击登录按钮
- 看小说, 漫画时按键盘的左右键进行翻页
2 常见的事件
常见的事件可以分为
- 鼠标事件
- 键盘事件
- 表单事件
窗口事件
<button>唐伯虎</button><script>/* 格式jq对象.事件名称(匿名函数) 事件触发之后要做的操作都写在匿名函数中*/$('button').click(function(){//alert('秋香')console.log(this);//注意 在jquery事件内部this代表的是dom对象,不是jquery对象})//鼠标移入事件$('button').mouseover(function(){console.log(111);})</script>
3 jQuery如何处理事件
**jQuery对象.事件名称(匿名函数) **<br /> 事件触发之后要操作的代码都写在匿名函数里面
语法
$("选择器").事件名(function(){// 事件处理函数});
示例
$("btn").click(function(){alert('我被点击了')});
五. jQuery CSS操作
1 CSS操作
css(属性名) 获取属性名对应的值<br /> css(属性名,值) 设置指定的属性的值
语法
// 设置单个属性$("选择器").css('属性名', '属性值')// 设置多个属性$("选择器").css({属性名1: 属性值1,属性名2: 属性值2})
示例
<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><script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script><style>div{width: 200px;height: 200px;background: pink;}</style></head><body><div></div><script>//css()方法只有一个参数,就是获取当前属性的值console.log($('div').css('width'));//css()方法有两个参数,就是设置当前属性的值$('div').css('width','300px')$('div').css('height','300px')$('div').css('background','purple')//还可以使用{}批量设置属性(复合属性名采用驼峰命名法,属性值不是数字要加引号)$('div').css({width:400,height:400,backgroundColor:'red'})</script></body>
2 类操作
更多的时候, 我们使用类操作
- 添加一个类样式: addClass
- 删除一个类样式: removeClass
- 切换类样式: toggleClass
示例
<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><script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script><style>div{width: 200px;height: 200px;background: pink;margin: 100px auto;transition: all 0.5;}.current{background: red;transform: rotate(60deg);}</style></head><body><div class="current"></div><script>//添加类 addClass/* $('div').click(function(){$(this).addClass('current')}) *///删除类 removeClass/* $('div').click(function(){$(this).removeClass('current')}) *///切换类 toggleClass$('div').click(function(){$(this).toggleClass('current')})</script></body>
