【jQuery】学习一下JS库——jQuery
jQuery
$ == jQuery
顶级对象
$(function(){
//页面加载完成才执行这里的代码
});
要求掌握:
- DOM对象和jQuery对象
- jQuery的使用方法
- 选择器、样式、动画、属性、元素的创建、增、删、改、查
- jQuery事件的注册、绑定、委托、解绑
一、jQuery对象
01. 基本概念,区分DOM对象和jQuery对象
-
用原生JS获取来的对象就是DOM对象
-
jQuery方法获取的元素就是 jQuery对象
- jQuery对象本质是:利用
$
对DOM对象包装后产生的对象(伪数组形式存储)
- jQuery对象本质是:利用
-
【注意】jQuery对象只能使用 jQuery方法,D0M对象则使用原生的 JavaScipt属性和方法
02. 两个对象之间的转换
-
DOM对象转换为jquery对象:
$(DOM对象)
-
jQuery对象转换为DOM对象:
-
$("element")[index]
、$(element).get(index)
伪数组里面的元素即为DOM对象,所以用数组的方法取出DOM对象
-
二、jQuery的使用方法
关于隐式迭代!!!
- 遍历内部DOM元素(伪数组形式存储)的过程就叫做隐式迭代
- 简单理解∶给匹配到的所有元素进行循环遍历,执行相应的方法,而不用手动进行循环
01. 选择器法的方法
(1)$("selector");
-
CSS选择器方法:
*
、tagname
、id
、class
、并集选择器
、交集选择器
、层级选择器
使用方法同:CSS选择器、querySelector
-
筛选选择器:
:first
、:last
、:eq(index)
、:odd
、:even
- 特殊:表单里的
:checked
(筛选被选中的表单元素)
- 特殊:表单里的
(2)筛选方法
语法 | 描述 |
---|---|
.parent() | 查找父级 |
.children("selector") | 查找匹配的子级【亲儿子】 |
.find("selector") | 查找匹配选择器的【后代】 |
.siblings("selector") | 查找指定的兄弟节点,不包括自己本身,括号为空则为所有兄弟节点(伪数组形式) |
.nextAll([expr]) | 查找当前元素之后所有的同级元素 |
.prevAll([expr]) | 查找当前元素之前所有的同级元素 |
.hasClass("className") | 检查当前的元素是否含有某个特定的类,如果有,则返回true |
.eq(index) | 查找父元素中指定索引号所在的子元素, 父元素是jQuery对象(伪数组) |
(3)获取祖先元素
-
parent()
:返回父亲元素 -
parents()
:返回一个数组,包含所有祖先元素 -
parents("选择器")
:返回指定祖先元素
02. 样式的操作
(1)操作样式
-
获取样式属性值
-
$("element").css("属性名");
属性名必须加引号
$("div").css("color");
-
-
设置样式属性
-
$("element").css("属性名","属性值");
属性值是数字可以不用单位和引号
$("div").css("color","red"); $("div").css("fontSize",20);
-
-
设置多组样式属性
-
$("element").css({"属性名":"属性值","属性名":"属性值"});
将参数设置为对象形式,属性名和属性值是键值对的形式,属性与属性之间是用逗号隔开
$("div").css({ color:"red", width:200, backgroundColor:"blue" });
-
(2)操作类
【注意】className
不用添加 .
-
添加类
$("element").addClass("className")
-
删除类
$("element").removeClass("className")
-
切换类(没有就添加,有就删除)
$("element").toggleClass("className")
$(".father").addClass("big");
$(".father").removeClass("big");
$(".father").toggleClass("big");
03. 事件控制
-
触发事件
$("element").事件
- 事件:
click
、mouseover
、…(不添加on
)
- 事件:
-
$("element").hover(function(){},functino(){});
- 鼠标经过、离开复合事件(类似于CSS中
:hover
) - 两个函数参数,第一个函数是鼠标经过触发,第二个函数是鼠标离开触发
- 只写一个函数,则鼠标经过、离开都会触发相同的函数内部事件
- 鼠标经过、离开复合事件(类似于CSS中
-
表单事件
change
:表单发生变化时触发 -
获得当前元素的索引号
$(this).index()
04. 动画效果的实现
(1)元素显示与隐藏效果
-
.show([speed,[easing],[funcition]])
- 参数可省略
- speed:动画速度,“fase,normal,slow”,或者是“具体时间”,单位是毫秒
- easing:动画类型
- function:回调函数
-
.hide([speed),[easing],[funcition]
$("btn").click(function(){ $("target").show("fast"); $("target").show(1000); $("target").show(1000,function(){ }); });
(2)元素滑动效果
slideUp()
、slideDown()
、slideToggle()
(3)淡入淡出效果
-
fadeIn
、fadeOut
、fadeToggle
-
fadeTo
:调整透明度(必须有速度和透明度)$("div").fadeTo(1000,0.5);
(3)动画队列
-
基本概念:动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。
-
所以需要停止动画
stop()
:结束上一次动画,必须写在动画前面
-
animate(params,[speed],[ease],[fn])
params
:需要更改的样式属性,以对象形式传递,不可省略,复合属性采用驼峰命名法- 其它参数可省略
$("div").animate({ left: 200, top: 400 },2000);
05. 属性的获取与设置
(1)固有属性
- 获取属性:
prop("固有属性")
- 设置属性:
prop("固有属性",“属性值”)
(2)自定义属性
- 获取属性:
attr("自定义属性")
- 设置属性:
attr("自定义属性",“属性值”)
- 移除属性:
removeAttr("自定义属性")
(3)数据缓存 data()
这个里面的数据是存放在元素的内存(缓存)里面的
-
设置属性:
data("属性名",“属性值)
这个属性在DOM结构上是看不到的
-
获取属性:
data("属性名")
可以获取
data()
设置的属性还可以获取H5新增自定义属性
data-属性名
,使用时不需要加data-
06. 元素内容
(1)获取元素内容
$("div").html()
:同innerHTML
$("div").text()
:同innerText
$("div").val()
:同value
(2)设置元素内容
$("element").html("内容")
$("element").text("内容")
$("element").val("内容")
toFixed(2)
:可以保留两位小数,使用后变为字符串类型
四、操作
01. 遍历
each(function(index,domEle){})
- 遍历匹配的每一个元素,主要用DOM处理
- index是每个元素的索引号,domEle是每个DOM元素对象,不是jQuery对象
- 所以要使用jquery方法,就需要将这个dom元素转换为jquery对象:
$(domEle)
$.each(obj,function(index,element){})
- 可用于遍历任何对象,主要用于数据处理,比如数组、对象
- 函数有两个参数:index是每个元素的索引号,elemnet是遍历的内容
02. 创建
-
$("<标签名></标签名>")
$("<p>这是动态创建的P元素</p>");
03. 增加
-
$("parent").append(child)
:添加子元素child
到父元素parent
内部末尾 -
$("parent").prepend(child)
:添加子元素child
到父元素parent
内部首位
-
$("parent").after("sibling")
:添加元素sibling
到parent
元素的后面
04. 删除
$("element").remove()
:删除匹配的元素$("element").empty()
:删除匹配元素内部的子节点$("element").html("")
:直接设置为空
五、事件
01. 注册事件
(1)绑定单个事件
与原生基本一致,比如 click、mouseover、 mouseout、bur、 focus、 change、 keydown、 keyup、 resize、scroll
$("element").click(function(){
//事件处理程序
});
(2)绑定多个事件——on
-
语法结构:
$("element").on(events,[selector],fn)
- events:一个或多个用空格分隔的事件类型,如"cick"或" keydown
- selector:元素的子元素选择器,用于事件委托
- fn:回调函数,即绑定在元素身上的侦听函数
-
可以为同一个元素绑定多个事件
$("div").on({ mouseenter:function(){ //事件处理程序 }, click:function(){ //事件处理程序 } });
-
如果事件处理程序相同,则
$("div").on("mouseenter mouseleave",function(){ $(this).toggle(""); });
-
事件委托
$(".father").on("click",".son",function(){ //事件绑定在 .father 上,但触发的对象是 .son });
-
动态创建元素的绑定事件
on
可以给未来动态创建的元素绑定事件
02. 解绑事件
-
off(event,[selector])
$(".father").off("click"); $(".father").off("click",".son")
-
关于
one
事件:只触发一次事件one(event,[selector])
$(".father").one("click"); $(".father").one("click",".son");
03. 自动触发事件
-
trigger("event")
-
triggerHandler("event")
:不会触发元素的默认行为$(".father").trigger("click");
04. 事件对象
-
阻止默认行为
$("div").preventDefault(); // 或者 return false;
-
阻止冒泡
$("div").stopPropagation();
六、其它方法
01. 对象拷贝
-
把某个对象拷贝(合并)给另外一个对象使用:
$.extend([deep], target, objectl, [objectN])
- deep:默认为 false 浅拷贝,如果设为true为深拷贝,
- 浅拷贝:把原对象的复杂数据类型的地址拷贝给目标对象,此时原对象和目标对象的复杂数据类型指向同一个对象
- 深拷贝:把原对象的所有数据完全复制一份并合并到目标对象
- target:要拷贝的目标对象
- object1:待拷贝到第一个对象的对象
浅拷贝会覆盖目标对象的已有数据
深拷贝会合并目标对象的不冲突的已有数据,冲突的数据仍会覆盖
- deep:默认为 false 浅拷贝,如果设为true为深拷贝,