1.jquery的使用
使用jquery需要引入jquery文件
<script src="...文件路径"></script>
<script>
...jquery格式的代码
</script>
2.jquery的入口函数以及基础语法
基础语法:
$(选择器).执行的动作(动作执行的方法)
例如:
$(document).ready(function(){
...需要执行的jquery代码
//$(document).ready(function(){}的作用是防止文档未加载完全就运行jquer代码,它是jquery的入口函数
})
注意:
通过jquery入口函数不能拿到DOM元素的宽高
多个jquery入口函数并不会发生覆盖现象
3.jquery选择器
1.元素选择器
jQuery 使用 CSS 选择器来选取 HTML 元素。
$("#intro") id="intro" 的元素
$(".intro") 所有 class="intro" 的元素
$(this) 当前 HTML 元素
$("p") 选取 <p> 元素。
$("p.intro") 选取所有 class="intro" 的 <p> 元素。
$("p#demo") 选取所有 id="demo" 的 <p> 元素。
$("ul li:first") 每个 <ul> 的第一个 <li> 元素
...
2.属性选择器
jQuery 使用 XPath 表达式来选择带有给定属性的元素。
$("[href]") 选取所有带有 href 属性的元素。
$("[href='#']") 选取所有带有 href 值等于 "#" 的元素。
$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。
$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
...
3.CSS 选择器
jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。
$("p").css("background-color","red"); //p元素内容的背景颜色变为红色
...
3.5 jQuery中的数据类型判断
语法: $.type(obj)
例如:
$.type($('div'));//object
4.入口函数的多种写法
(1)方法一:
$(document).ready(function(){
...
})
(2)方法二:
jQuery(document).ready(function(){
...
})
(3)方法三:(推荐使用)
$(function(){
...
})
(4)方法四:
jQuery(function(){
...
})
5.解决jquery中使用的 $ 符号与其他语言的$符号发生冲突问题
方法一:释放 $ 符号使用权,即不再使用 $符号作为jquery的声明符号
在jquery入口函数之前通过 JQuery.noConflict() 方法释放 $ 符号,让jquery的声明都变为JQuery
如:
jQuery.noConflict();
jQuery(function(){
...执行代码
})
方法二:自定义jquery声明符号(推荐使用)
const JQ=jQuery.noConflict();
JQ(function(){
...执行代码
})
6.静态方法和实例方法
(1)直接添加给类的就是静态方法
(2)静态方法通过类名调用
(3)实例方法添加在prototype上
(4)实例方法的调用通过类的实例对象来调用该实例方法
7.jquery中的each方法
each方法用于遍历数组
语法:$.each(arr,function(index,value){...});
arr:需要遍历的数组
index:遍历值的下标(必须是参数1的位置)
value:遍历到的值(必须是参数2的位置)
例如:
let arr=[1,3,2,7,5];
$.each(arr,function(index,value){
console.log(index,value);
//0,1
//1,3
//2,2
//3,7
//4,5
})
8.jquery中的map方法,使用map方法可以对数组进行加工处理
用于遍历数组
语法:$.map(arrName,function(value,index,arr){...})
9.jquery中的其他方法
(1)$.trim(str):用于去除字符串两边的空格,str表示需要加工的字符串.该方法返回值是一个新的处理后的字符串.不会影响原字符串.
(2)$.isWindow(obj):用于判断对象是否是window对象,返回值是一个布尔值。
(3)$.isArray(obj):用于判断传入的对象是否是数组类型,返回值是一个布尔值
(4)$.isFunction(obj):判断传入的对象是否是一个函数,返回值是一个布尔值,jQuery本质是一个函数
(5)$.holdReady(布尔值):用于暂停jquery入口函数的执行,当为true表示赞停,当为false表示继续执行
10.jquery中选择器的伪元素
(1):empty 作用:找到所有既没有文本内容也没有子元素的指定元素
如: $('div:empty') //找到所以空的div元素
(2):parent 作用:找到所有拥有文本内容或子元素的指定元素
如: $('div:parent') //找到所有含有文本内容或子元素的div标签
(3):contains(text) 作用:找到所有含有指定文本的指定元素
如: $("div:contains('哈哈')") //找到所有含有内容 哈哈 的div元素
(4)has(selector) 作用:找到所有含有指定元素的指定元素
如: $("div:has('p')") //找到所有含有p元素的div元素
11.jquery中的属性操作方法
1.attr(name|pro|key,val|fn)
作用:获取或设置属性节点的值.
语法: obj.attr(name|pro|key,val|fn)
当只传递一个参数时,则表示获取属性节点的值
当传递的是两个参数时,则表示设置属性节点的值
注意:
(1)当使用获取属性时,该方法永远只返回查询到的第一个元素的属性值.
(2)当使用设置属性时,该方法会为查询到的所有元素设置相同的属性值.
(3)当使用设置属性时,若属性不存在,则会自动创建该属性。
例如:
//获取属性值
$('h1').attr('name');//获取第一个h1元素的name属性值
//设置属性值
$('div').attr('class','box');//设置所有div元素的class属性值为box
2.removeAttr(name)
作用:删除指定元素的单个或多个指定属性
语法: obj.removeAttr('属性名1 属性名2 ...')
注意:
(1)该方法会删除所有指定元素的指定属性
3.prop(name|pro|key,val|fn)
作用:获取或设置属性节点的值.
语法: obj.attr(name|pro|key,val|fn)
当只传递一个参数时,则表示获取属性节点的值
当传递的是两个参数时,则表示设置属性节点的值
注意:
(1)当使用获取属性时,该方法永远只返回查询到的第一个元素的属性值.
(2)当使用设置属性时,该方法会为查询到的所有元素设置相同的属性值.
(3)当使用设置属性时,若属性不存在,则会自动创建该属性。
例如:
//获取属性值
$('h1').prop('name');//获取第一个h1元素的name属性值
//设置属性值
$('div').prop('class','box');//设置所有div元素的class属性值为box
4.removeProp(name)
作用:删除指定元素的单个或多个指定属性
语法: obj.removeProp('属性名1 属性名2 ...')
注意:
(1)该方法会删除所有指定元素的指定属性
attr与prop的区别:
两种方法都能够对指定元素的属性进行获取或设置操作,
但是prop能够操作属性节点,
prop方法能够获取属性值为布尔值的属性的状态,如:checked、selected、disabled、...属性,
若存在该checked、selected、disabled、...属性,则prop方法的返回值为true,不存在则返回值为false.
若存在该checked、selected、disabled、...属性,则attr方法的返回值为该属性本身,若不存在则返回值为undefine.
12.jQuery中操作类属性的方法
(1)addClass方法
作用:添加一个或多个类属性值
语法: obj.addClass('className1 className2 ...');
(2)removeClass方法
作用:删除一个或多个类属性值
语法:obj.removeClass('className1 className2 ...');
(3)toggleClass方法
作用:切换类属性值(有就进行删除操作,没有就进行添加操作)
语法:obj.toggleClass('className1 className2 ...)
13.jQuery中文本值操作方法
(1)html方法
作用:设置或获取指定元素的内容(和原生innerHTML相同)
语法:
设置: obj.html('内容')
获取:obj.html()
(2)text方法
作用:设置或获取指定元素的纯文本内容(和原生innerText相同)
语法:
设置:obj.text('内容')
获取:obj.text()
(3)val方法
作用:获取或设置表单标签的值
语法:
设置: obj.val('内容')
获取:obj.val()
14.jQuery中样式操作方法
(1)逐个设置样式css
语法: obj.css('样式名','样式值');
(2)批量设置样式css
语法: obj.css({样式名1:'样式值',样式名2:'样式值',...})
(3)获取样式css值
语法: obj.css('样式名')
15.JQuery事件
事件绑定方法:(推荐使用on方法)
(1)eventName(callbakc())
语法: obj.事件名(function(){...事件执行方法})
如: $('button').click(function(){
alert('Hello ')
})
(2)on(eventName,callback())
语法: obj.on('事件名',function(){...事件执行方法})
如: $('button').on('click',function(){
alert('On方法')
})
事件解除方法:
(1)off(arg1,arg2,...)
语法: obj.off(|arg|arg1,arg2,...)
当不出入参数时,默认解除指定对象的所有事件
当传入参数时,解除指定对象的指定事件
如: $('button').off();//解除button按钮的所有事件
$('button').off('click');//解除button按钮的click事件
$('button').off('click','mouseenter');//解除button按钮的click与mosueenter事件。
16.jquery中的事件冒泡与默认行为
(1)阻止事件冒泡
方法:在回调函数中声明
return false;
或 event.stopPropagation();//事件对象调用方法
(2)阻止默认行为
方法在事件回调函数中声明
return false;
或 event.preventDefault();//事件对象调用方法
17.事件自动触发器
(1)trigger方法,用于自动触发事件。
语法: obj.trigger(eventName);
例如:
$('button').trigger('click');//自动触发button的click事件
(2)triggerHandler(eventName)方法,也用于自动触发事件。
语法: obj.triggerHandler(eventName)
例如:
$('button').triggerHandler('click);//自动触发button的click事件
两者区别:
使用trigger自动触发器会触发冒泡事件,而triggerHandler不会触发冒泡事件。
使用trigger自动触发器会触发默认行为,而triggerHandler不会触发默认行为。
18.自定义事件的设置
1.通过on方法设置一个自定义事件
2.通过trigger方法触发自定义事件
obj.on('自定义事件名',自定义事件执行方法);
obj.trigger('自定义事件名')
19.事件委托
事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数
通过delegate()方法我们可以为指定元素的资源添加一个或多个事件处理程序,并规定事件的执行方法
语法: 指定元素(父元素).delegate('指定子元素','执行的事件名',function(){...事件执行的方法})
如:为ul标签中的li标签绑定click事件
$('ul').delegate('li', 'click', function() {
$(this).css({background:'red'});
});
20.移入移出事件
(1)监听移入事件
语法: 1.obj.mouseover(function(){...执行方法});此方法存在冒泡事件行为,因此推荐使用mouseenter方法
或
2.obj.mouseenter(function(){...执行方法});(推荐使用)
(2)监听移出事件
语法: 1.obj.mouseout(function(){...执行方法})
或
2.obj.mouseleave(function(){...执行方法});(推荐使用)
(3)同时监听移入移出事件
语法: obj.hover(function(){...移入事件执行方法},function(){...移出事件执行方法})
21.jQuery中的过滤
(1)first()方法,返回被选元素的首个元素。
语法: obj.first(); //返回指定元素的第一个元素
例如:
$('div p').first();//返回首个div元素中的第一个p元素
$('div').first();//返回第一个div元素
(2)last()方法,返回指定元素的最后一个元素
语法: obj.last();//返回指定元素的最后一个元素
例如:
$("div").last();//返回最后一个div元素
$("div p").last();//返回最后一个div中的最后一个p元素
(3)eq(index)方法,返回指定元素中指定索引号的元素
语法: obj.eq(index);//返回所有指定元素中指定索引号的指定元素
例如:
$('p').eq(2);//返回所有p元素中索引值为2的p元素
(4)filter()方法,返回符合要求的所有指定元素.
语法: obj.filter(fn|object)
例如:
$("p").filter(".hah");//返回所有含有 class属性为hah 的p元素.
(5)not()方法,返回所有不符合要求的指定元素
语法: obj.no(fn|object)
例如:
$('p').not('#txt');//返回所有 无 id属性为txt 的p元素
22.jQuery中的隐藏与显示动画
(1)隐藏动画hide()方法,该方法能够隐藏对象
语法: obj.hide(time,callback
time:可选参数,规定隐藏动画的过渡时间,单位为毫秒1s=1000ms
callback:可选参数,回调函数,在动画执行完毕在之后进行的回调内容
例如:
$("div").hide(1000,function(){
alert('隐藏动画执行完毕')
});
(2)显示动画show()方法,该方法用于显示隐藏的对象
语法: obj.show(time,callback)
time:可选参数,规定显示动画的过渡时间,单位为毫秒1s=1000ms
callback:可选参数,回调函数,在动画执行完毕在之后进行的回调内容
例如:
$("div").show(1000)
(3)显示与隐藏切换toggle()方法,进行显示与隐藏之间的轮流切换
语法: obj.toggle(time,callback);
time:可选参数,规定显示动画的过渡时间,单位为毫秒1s=1000ms
callback:可选参数,回调函数,在动画执行完毕在之后进行的回调内容
例如:
$("div").toggle(1000)
23.监听滚动条事件
语法:
obj.scroll(data,fn)
data:可选参数,可作为数据传递给回调函数fn进行处理
fn:回调函数,监听滚动条事件执行的回调函数.
例如:
//监听页面滚动条事件
$("window").scroll(function(){
...
})
//监听div滚动条事件,对元素滚动的次数进行计数:
$("div").scroll(function() {
$("span").text(x+=1);
});
24.jQuery中的获取 位置事件
(1)event.pageX方法,鼠标相对于文档的左边缘的位置。
event:事件对象
pageX:方法名
例如:
$("div").on("click",function(event){
let left=event.pageX;
})
(2)event.pageY方法,鼠标相对于页面顶部的位置
event:事件对象
pageX:方法名
例如:
$("div").on("click",function(event){
let left=event.pageY;
})
(3)offset()方法,获取指定元素相对于当前页面的相对偏移位置.返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。
注意:该方法获取到的偏移位置包含有padding和margin
语法: obj.offset();
例如:
let offset=$("div").offset()
left=offset.left
top=offset.top
(4)scrollTop()方法,获取或设置指定元素相对于滚动条顶部的偏移位置
获取语法: obj.scrollTop()
设置语法: obj.scrollTop(num) //必须存在滚动条才能够设置
(5)scrollLeft()方法,获取或设置指定元素相对于滚动条左边的偏移位置
获取语法: obj.scrollLeft()
设置语法: obj.scrollLeft(num) //必须存在滚动条才能够设置
(6)position()方法,获取指定元素相对于父元素的偏移。返回的对象包含两个整型属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。
语法: obj.position();
例如:
let offset=$("div").position()
left=offset.left
top=offset.top
25.jQUery中的展开与折叠
(1)折叠
语法: obj.slideUp(time,fn)
time:可选参数,规定折叠所花费的时间.单位ms,1s=1000ms
fn:可选参数,规定动画执行完毕后的回调函数
例如:
$("div").slideUp(1000,function(){
alert("div已经折叠");
})
(2)展开
语法: obj.slideDown(time,fn)
time:可选参数,规定展开所花费的时间.单位ms,1s=1000ms
fn:可选参数,规定动画执行完毕后的回调函数
例如:
$("div").slideDown(1000,function(){
alert("div已经展开");
})
(3)展开与折叠轮切换
语法:obj.slideToggle(time,fn)
time:可选参数,规定轮切所花费的时间.单位ms,1s=1000ms
fn:可选参数,规定动画执行完毕后的回调函数
例如:
$("div").slideToggle(1000,function(){
alert("div轮切");
})
26.jQuery中的淡入与淡出
(1)淡入
语法:obj.fadeIn(time,fn)
time:可选参数,规定淡入所花费的时间.单位ms,1s=1000ms
fn:可选参数,规定动画执行完毕后的回调函数
例如:
$("div").fadeIn(1000,function(){
alert("div淡入");
})
(2)淡出
语法: obj.fadeOut(time,fn)
time:可选参数,规定淡出所花费的时间.单位ms,1s=1000ms
fn:可选参数,规定动画执行完毕后的回调函数
例如:
$("div").fadeOut(1000,function(){
alert("div淡出");
})
(3)淡入淡出轮切
语法: obj.fadeToggle(time,fn)
time:可选参数,规定淡出淡入所花费的时间.单位ms,1s=1000ms
fn:可选参数,规定动画执行完毕后的回调函数
例如:
$("div").fadeToggle(1000,function(){
alert("div淡入淡出轮切");
})
27.自定义动画
animate() 方法用于创建自定义动画。
语法:
obj.animate({params},speed,callback);
params:必需,规定定义形成动画的 CSS 属性。
speed:可选参数,规定动画效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
callback:可选参数,规定动画完成后所执行的函数名称。
例如:
$("div").animate({width:'200px',height:'100px'},1000,function(){
alert("动画执行完毕")
})
28.动画停止与延时
(1)动画停止
stop()方法,stop() 会清除在被选元素上指定的当前动画。
语法:obj.stop(stopAll,goToEnd);
stopAll 可选参数,规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。
goToEnd 可选参数,规定是否立即完成当前动画。默认是 false。
例如:
$("div").stop()
(2)延时运行队列
delay()方法,设置一个延时来推迟执行队列中之后的项目。
语法: delay(time)
time:必须,规定进行延时的时间,单位为毫秒。1s=1000ms
29.jQuery中的增、删、改、查
(1)节点增加
语法: obj.prepend(content),向指定元素的子元素顶部添加内容。
content:需要添加的内容
obj.append(content),向指定元素的子元素尾部添加内容。
content:需要添加的内容
例如:
$("div").append("<P>我是添加在尾部的元素内容</P>");
(2)节点删除
1.语法: obj.empty(),删除指定元素的所有子元素内容
例如:
$("div").empty();//删除div元素的所有子元素
2.语法: obj.remove(),删除指定元素及其子元素
例如:
$("div>p").eq(1).remove();//删除div元素所有子元素p中下角标为1的p元素
(3)节点替换(改)
1.语法:obj.replaceWith(content),将指定元素及其内容全部替换(推荐使用)
content:新的内容
例如:
$("p").eq(1).replaceWith("<i>替换内容</i>")
2.语法:obj.replaceAll(),把被选元素替换为新的 HTML 元素。
例如:
$("<span>Hello world!</span>").replaceAll("p:last");//把最后一个 <p> 元素替换为 <span> 元素
(4)复制节点
clone() 方法生成指定元素的副本,包含子节点、文本和属性。
1.浅复制节点,即不会将指定元素的事件处理函数一起复制
语法: obj.clone(false);
2.深复制节点,即复制时会将事件处理函数一起复制
语法: obj.clone(true)