【jQuery】常用API、样式、属性、事件

1、jQuery概述

1.1 JavaScript库

JavaScript库:即library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了很多预先定义好的函数在里面,比如动画animate、hide、show,比如获取元素等。

1.2 jQuery的概念

jQuery是一个快速、简洁的JavaScript库,其设计的宗旨是“write Less , Do More”,即倡导写更少的代码,做更多的事情。
jQuery封装了JavaScript常用的功能代码,优化了DOM操作、事件处理、动画设计和Ajax交互。
官网:https://jquery.com/

2、jQuery基本使用

2.1 jQuery的入口函数

$(function(){
	...//此处是页面DOM加载完成的入口
});
$(document).ready(function(){
	...//此处是页面DOM加载完成的入口
});
  1. 等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,jQuery帮我们完成了封装。
  2. 相当于原生js 中的DOMContentLoaded
  3. 不同于原生js中的load事件是等页面文档、外部的js文件、css文件、图片加载完毕才执行内部代码
  4. 更推荐使用第一种方式

2.2 jQuery的顶级对象$

  1. $是 jQuery的别称,在代码中可以使用jQuery代替$,但一般为了方便,通常都直接使用$
  2. $是jQuery的顶级对象,相当于原生JavaScript中的window。把元素利用$包装成Query对象,就可以调用jQuery的方法。

2.3 jQuery对象和DOM对象

  1. 用原生JS获取来的对象就是DOM对象
  2. jQuery方法获取的元素就是jQuery对象
  3. jQuery对象本质是:利用$对DOM对象包装后产生的对象(伪数组形式存储)
  4. jQuery对象只能使用jQuery方法,DOM对象则使用原生的JavaScirpt属性和方法

2.4 jQuery对象和DOM对象之间的相互转换

因为原生js比jQuery更大,原生的一些属性和方法jQuery没有给我们封装.要想使用这些属性和方法需要把jQuery对象转换为DOM对象才能使用。

  1. DOM对象转化为jQuery对象:$(DOM对象)
$('div')
  1. jQuery对象转换为DOM对象(两种方法)
$('div')[index]   //index是索引号
$('div').get(index)   //index是索引号

3、jQuery常用API

3.1 jQuery选择器

$(”选择器“)   //里面选择器直接写CSS选择器即可,但是要加引号
3.1.1 jQuery基本选择器
名称用法描述
ID选择器$("#id")获取指定ID的元素
全类选择器$('*')匹配所有元素
类选择器$(".class")获取同一类class的元素
标签选择器$("div")获取同一类标签的所有元素
并集选择器$("div,p,li")选取多个元素
交集选择器$("li.current")交集元素
3.1.2 jQuery层级选择器
名称用法描述
子代选择器$("ul>li");使用>号,获取亲儿子层级的元素;注意,并不会获取孙子层级
后代选择器$("ul li");使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子
3.1.3 隐式迭代

遍历内部 DOM元素(伪数组形式存储)的过程就叫做隐式迭代

3.1.4 jQuery筛选选择器
语法用法描述
:first$('li:first')获取第一个li元素
:last$('li:last')获取最后一个li元素
:eq(index)$("li:eq(2)")获取到的li元素中,选择索引号为2的元素,索引号index从0开始。
:odd$("li:odd")获取到的li元素中,选择索引号为奇数的元素
:even$("li:even")获取到的li元素中,选择索引号为偶数的元素
3.1.5 jQuery筛选方法
语法用法说明
parent()$("li").parent();查找父级
children(selector)$("ul").children("li");相当于$("ul>li"),最近一级(亲儿子)
find(selector)$("ul").find("li");相当于$("ul li"),后代选择器
siblings(selector)$(".first").siblings("li");查找兄弟节点,不包括自己本身
nextAll([expr])$(".first").nextAll()查找当前元素之后所有的同辈元素
prevtAll([expr])$(".last").prevtAll()查找当前元素之前所有的同辈元素
hasClass(class)$(“div”).hasClass("protected")检查当前的元素是否含有某个特定的类,如果有,则返回true
eq(index)$("li").eq(2);相当于 $("li:eq(2)"),index从0开始
parents()$(".four").parents(".one")返回所有祖先中类名为 .one 的
3.1.6 jQuery中的排他思想

示例: (点击按钮变色,其余不变)

$(function(){
	$("button").click(function(){
		$(this).css("background","red");
		$(this).siblings("button").css("background","");
	})
})
3.1.7 链式编程

链式编程是为了节省代码量,看起来更优雅

$(function(){
	$("button").click(function(){
		$(this).css("background","red").siblings("button").css("background","");
	})
})

3.2 jQuery样式操作

3.2.1 操作css方法
  1. 参数只写属性名,则是返回属性值
$(this).css("color");
  1. 参数是属性名属性值逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
$(this).css("color","red");
  1. 参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开,属性可以不用加引号
$(this).css({"color":"white","font-size":"20px"});
3.2.2 设置类样式方法
  1. 添加类
$("div").addClass("current");
  1. 删除类
$("div").removeClass("current");
  1. 切换类
$("div").toggleClass("current");
3.2.3 类操作与className的区别
  • 原生JS中className会覆盖元素原先里面的类名
  • jQuery里面类操作只是对指定类进行操作,不影响原先的类名

3.3 jQuery效果

3.3.1 显示隐藏效果
  1. 语法规范
show([speed,[easing],[fn]])    //显示
hide([speed,[easing],[fn]])    //隐藏
toggle([speed,[easing],[fn]])    //切换
  1. 参数
    1. 参数都可以省略,无动画直接显示
    2. speed:三种预定速度之一的字符串(“slow”, "normal” or "fast”)或表示动画时长的毫秒数值(如:1000)
    3. easing :(Optional)用来指定切换效果,默认是“swing” (慢快慢),可用参数“linear"(匀速)
    4. fn: 回调函数,在动画完成时执行的函数,每个元素执行一次
3.3.2 滑动效果
slideDown([speed,[easing],[fn]])    //下滑
slideUp([speed,[easing],[fn]])    //上拉
slideToggle([speed,[easing],[fn]])    //切换
3.3.3 事件切换 hover
hover([over,]out)
  1. over:鼠标移到元素上要触发的函数(相当于mouseenter)
  2. out:鼠标移出元素要触发的函数(相当于mouseleave)
  3. 如果只写一个函数,那么鼠标经过和鼠标离开都会触发这个函数
3.3.4 动画队列及其停止排队方法
  1. 动画或效果队列
    • 动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。
  2. 停止排队
stop()

(1) stop()方法用于停止动画或效果
(2) 注意:stop() 写到动画或效果的前面相当于停止结束上一次的动画

3.3.5 淡入淡出效果
fadeIn([speed,[easing],[fn]])    //淡入
fadeOut([speed,[easing],[fn]])    //淡出
fadeToggle([speed,[easing],[fn]])    //切换

渐进方式调整到指定的不透明度:

fadeTo([[speed],opacity,[easing],[fn]]) 
  1. opacity 透明度必须写,取值0~1之间
  2. speed:三种预定速度之一的字符串(“slow”, "normal” or "fast”)或表示动画时长的毫秒数值(如:1000)必须写
3.3.6 自定义动画 animate
  1. 语法
animate(params,[speed],[easing],[fn])
  1. 参数
    • params:想要更改的样式属性,以对象形式传递,必须写。属性名可以不用带引号,如果是复合属性则需要采取驼峰命名法borderLeft。其余参数都可以省略。

示例:

$("div").animate({
	left: 500,		//盒子需要添加定位
	top: 300,
	opacity: .5		//修改透明度
},500)

3.4 jQuery属性操作

3.4.1 设置或获取元素固有属性值 prop()

所谓元素固有属性就是元素本身自带的属性,比如<a>元素里面的href,比如<input>元素里面的type

  1. 获取属性语法
prop("属性")
  1. 设置属性语法
prop("属性","属性值")
3.4.2 设置或获取元素自定义属性值 attr()

用户自己给元素添加的属性,我们称为自定义属性。比如给div添加index = “1”

  1. 获取属性语法
attr("属性")	//类似原生 getAttribute()
  1. 设置属性语法
attr("属性","属性值")	//类似原生 setAttribute()
3.4.3 数据缓存 data()

data()方法可以在指定的元素上存取数据,并不会修改DOM元素结构。一旦页面刷新,之前存放的数据都将被移除。

  1. 附加数据语法
data("name","value")	//向被选元素附加数据
  1. 获取数据语法
data("name")	//向被选元素获取数据

3.5 jQuery内容文本值

主要针对元素的内容还有表单的值操作

  1. 普通元素内容html() (相当于原生innerHTML
html()	//获取元素的内容
html("内容")	//设置元素的内容
  1. 普通元素文本内容 text()(相当于原生 innerText
text()	//获取元素的内容
text("内容")	//设置元素的内容
  1. 表单的值 val()(相当于原生 value
val()	//获取表单的内容
val("内容")	//设置表单的内容

3.6 jQuery元素操作

主要是遍历创建添加删除元素操作

3.6.1 遍历元素

jQuery隐式迭代是对同一类元素做了同样的操作。如果想要给同一类元素做不同操作,就需要用到遍历。

语法1:

$("div").each(function(index,domEle){ xxx; })
  1. each()方法遍历匹配的每一个元素。主要用DOM处理。each每一个
  2. 里面的回调函数有2个参数: index是每个元素的索引号,可以自己指定索引号名称;demEle是每个DOM元素对象不是jquery对象
  3. 所以要想使用jquery方法,需要给这个dom元素转换为jquery对象$(domEle)

语法2:

$.each(object,function(index,element){ xxx; })
  1. $.each()方法可用于遍历任何对象。主要用于数据处理,比如数组、对象
  2. 里面的函数有2个参数: index是每个元素的索引号; element遍历内容
3.6.2 创建元素

语法:

$("<li></li>");
3.6.3 添加元素
  1. 内部添加
element.append("内容")

把内容放入匹配元素内部最后面,类似原生 appendChild

element.prepend("内容")

把内容放入匹配元素内部最前面

  1. 外部添加
element.after("内容")	//把内容放入目标元素后面
element.before("内容")	//把内容放入目标元素前面
  1. 注意
    • 内部添加元素,生成之后,它们是父子关系
    • 外部添加元素,生成之后,它们是兄弟关系
3.6.4 删除元素
element.remove()	

删除匹配的元素(本身

element.empty()
element.html("")	

删除匹配的元素集合中所有的子节点清空匹配的元素内容

3.7 jQuery尺寸、位置操作

3.7.1 jQuery尺寸
语法用法
width() / heigth()取得匹配元素宽度和高度值,只算 width / height
innerWidth() / innerHeight()取得匹配元素宽度和高度值 包含 padding
outerWidth() / outerHeight()取得匹配元素宽度和高度值 包含 padding、border
outerWidth(true) / outerHeight(true)取得匹配元素宽度和高度值 包含padding、border、margin
  • 以上参数为空,则是获取相应值,返回的是数字型
  • 如果参数为数字,则是修改相应型
  • 参数可以不必写单位
3.7.2 jQuery位置
  1. offset() 设置或获取元素偏移
    • offset()方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系。
    • 该方法有2个属性left、top 。offset().top用于获取距离文档顶部的距离,offset().left用于获取距离文档左侧的距离。
    • 可以设置元素的偏移: offset({top:10,left:10});
  2. position() 获取元素偏移
    • position()方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级都没有定位,则以文档为准。
    • position() 方法只能获取,不能设置
  3. scrollTop0/scrollLeft()设置或获取元素被卷去的头部和左侧
    • scrollTop() 方法设置或返回被选元素被卷去的头部。
    • scrollLeft() 方法设置或返回被选元素被卷去的左侧。

4、jQuery事件

4.1 jQuery事件注册

单个事件注册
语法:

element.事件(function(){})
$("div").click(function(){ 事件处理程序 })

4.2 jQuery事件处理

4.2.1 事件处理 on() 绑定事件

on() 方法在匹配元素上绑定一个或多个事件的事件处理函数

语法:

element.on(events,[selector],fn)
  1. events:—个或多个用空格分隔的事件类型,如"click" 或 “keydown”。
  2. selector:元素的子元素选择器
  3. fn :回调函数,即绑定在元素身上的侦听函数

on() 方法优势1:

  • 可以绑定多个事件,多个事件处理程序

示例:

$(function(){
	$("div").on({
		mouseenter:function(){
			$(this).css("background","skyblue");
		},
		click:function(){
			$(this).css("background","purple");
		}
	})
})

当事件处理程序一样时:

$(function(){
	$("div").on("mouseenter click",function(){
		$(this).toggleClass("current");	//切换类
	})
})

on() 方法优势2:

  • 可以事件委派操作。事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。
$("ul").on("click","li",function(){
	alert('Hello World');
});

on() 方法优势3:

  • 动态创建的元素,click()没有办法绑定事件,on()可以给动态生成的元素绑定事件
$("ol").on("click","li",function(){
	alert(11);
})
var li = $("<li>我是后来创建的</li>");
$("ol").append(li);
4.2.2 事件解绑 off() 绑定事件

off() 方法可以移除通过 on() 方法添加的事件处理程序。


$("div").off();

括号内为空,解除div身上的所有事件


$("div").off("click");

解除了div身上的click事件


$("ul").off("click","li");

解绑事件委托

4.2.3 事件处理 one() 绑定事件

如果有的事件只想触发一次,可以使用one()来绑定事件。
语法格式与 on() 一致

4.2.4 自动触发事件 trigger()

有些事件希望自动触发,比如轮播图自动播放功能跟点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。

element.click()		//第一种简写形式
element.trigger("type")		//第二种自动触发模式

示例:

$("p").on("click",function(){
	alert("hi~");
});
$("p").trigger("click");	//此时自动触发点击事件,不需要鼠标点击

element.triggerHandler("type")	//第三种自动触发模式

第三种方式不会触发元素的默认行为

4.3 jQuery事件对象

事件被触发,就会有事件对象的产生

element.on(events,[selector],function(event){})
  • 阻止默认行为:event.preventDefault() 或者 return false
  • 阻止冒泡:event.stopPropagation()

5、jQuery其它方法

5.1 jQuery拷贝对象

如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法

语法:

$.extend([deep],target,object1,[objectN])
  1. deep:如果设为true 为深拷贝,默认为false 浅拷贝
  2. target:要拷贝的目标对象
  3. object1:待拷贝到第一个对象的对象
  4. objectN:待拷贝到第N个对象的对象
  5. 浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象。
  6. 深拷贝,前面加true,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象。

5.2 jQuery多库共存

  • 问题描述:
    • jQuery使用$作为标示符,随着jQuery的流行,其他js库也会用这$作为标识符,这样一起使用会引起冲突。
  • 客观需求:
    • 需要一个解决方案,让jQuery和其他的js库不存在冲突,可以同时存在,这就叫做多库共存。
  • jQuery解决方案:
    1. 把里面的$符号统一改为jQuery。比如jQuery("div")
    2. jQuery变量规定新的名称: $.noConflict()
var xx = $.noConflict();

5.3 jQuery插件

jQuery功能比较有限,想要更复杂的特效效果,可以借助于jQuery插件完成。
注意:这些插件也是依赖于jQuery来完成的,所以必须要先引入jQuery文件,因此也称为jQuery插件。

jQuery插件常用的网站:

  1. jQuery插件库 http://www.jq22.com/
  2. jQuery之家 http://www.htmleaf.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值