JQuery

jQuery学习

jQuery学习

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

  • 简单理解就是在一个js文件里面对我们原生的js代码进行了封装,存放在里面,这样我们可以快速高效的使用这些封装好的功能了

  • 常见的JavaScript库

    • jQuery

    • Prototype

    • YUI

    • Dojo

    • Ext JS

    • 移动端的zepto

这些库都是对原生的JavaScript的封装,内部都是JavaScript实现的

jQuery库包含以下功能:

  • HTML元素获取

  • HTML元素操作

  • CSS操作

  • HTML事件函数

  • JavaScript特效动画

  • HTML DOM遍历和修改

  • AJAX

  • Utilities

  • jQuery还提供大量的插件

1.jQuery的概念

jQuery是一个快速的,简介的JavaScript库,其设计宗旨是“write less,Do More”,写得更少做得更多事

  • jQuery封装了JavaScript常用的功能代码,优化了DOM操作,事件处理,动画设计和Ajax交互

  • 学习jQuery的本质就是学习这些函数(方法)

  • jQuery出现的目的是加快前端人员的开发速度,我们可以非常方便的调用和使用它,从而提高开发效率

优点:

  • 轻量的,核心文件才十几kb,不会影响加载速度

  • 跨浏览器的,基本兼容现在主流的浏览器

  • 链式编程、隐式迭代

  • 对事件,样式,动画支持,大大简化DOM操作

  • 支持插件扩展开发,有丰富的第三方插件:如日期控件、轮播图等

  • 免费开源

2.jQuery的基本使用

官方网址:https://jquery.com/

  • jQuery的基本使用

    • 引入:<script src="jQuery的文件位置"></script>

2.1 jQuery入口函数

方式一:

方式二:

  • 方式一和方式二实现功能是一样的都是等待原生DOM元素加载完毕才执行,不必等所有外部资源加载完毕才执行

  • 相当于原生js代码中的DOMContentLoaded

  • 不同于原生js中的load事件是等页面文档,外部的js文件、css文件、图片加载完毕才执行内部代码

2.2 jQuery的顶级对象$

  • $是jQuery的别称,在代码中可以使用jQuery代替$ ,但一般为了方便,通常都是直接使用$

  • $是jQuery的顶级对象,相当于原生的JavaScript中的window,把元素利用$包装成jQuery对象,就可以调用jQuery方法

2.3 jQuery对象和DOM对象

  • 用原生js获取来的对象就是DOM对象

  • jQuery方法获取的元素就是jQUery对象

  • jQuery对象本质:就是利$对DOM对象包装后生产的对象(以为数组的形式 进行存储)

  • jQuery对象只能使用jQuery方法,DOM对象只能使用原生js属性和方法,他们是不能混用的

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

DOM对象和jQUery对象是可以相互进行转换的

因为原生的js比jQUery要大,原生的一些属性和方法jQUery是没有给我们提供的,想要使用这些属性和方法需要把jQUery对象转换为DOM对象才能使用

2.4.1 把DOM对象转换为jQuery对象

$(DOM对象)

2.4.2 jQuery对象转换为DOM对象
  • 方式一:

    • $('div')[index] index是索引号

  • 方式二:

    • $('div').get(index) index是索引号

jQuery对象转化成DOM

3. jQuery常用API

3.1 jQuery选择器

原生js获取元素的方式很多,很杂而且兼容性情况不一致,因此jQuery给我们做了封装,是元素统一标准

$('选择器')——里面选择器直接写css选择器即可,但是要加引号

3.1.1 基本选择器

选择器用法描述
ID选择器$(‘#id’)获取指定元素的id
全选选择器$(‘**’)匹配所有元素
类选择器$(‘.class’)获取同一类class的元素
标签选择器$(‘div’)获取同一类标签的元素
并集选择器$(‘div,p,li’)获取多个元素
交集选择器$(‘div.content’)交集元素

3.1.2 jQuery层级选择器

名称用法描述
子代选择器$(‘ul>li’)使用>号获取子元素,并不会获取孙子级的元素
后代选择器$(‘ul li’)使用空格,代表后代选择器,获取ul下的li元素,包括孙子元素等
祖先选择器$(‘div’).parents(‘选择器’)获取当元素的祖先元素,选择器里面填写的是祖先的对应的各种名称

3.1.3 隐式迭代

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

简单理解给匹配到的元素进行循环遍历,执行相应的方法,而不用我们在进行遍历,简化我们的操作,方便调用

3.1.4 jQuery筛选选择器

语法用法描述
:frist$(‘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开始

重点记住:parent(), children(), find(), siblings(), eq()

3.1.6 jQuery的排他思想

想要多选一的效果,排他思想:当前元素设置样式,其余兄弟元素清除样式


3.2 jQuery样式操作

3.2.1 操作css方法

jQuery可以使用css方法来修改简单的元素样式,也可以操作类,修改多个样式

  • 参数只写属性名,这则返回属性值

    $('div').css('color')

  • 参数是属性名和属性值,是设置样式,属性名必须要加引号,值如果是数字可以不用跟单位和引号

    $('div').css('color','red)

  • 参数可以是对象形式,方便设置多组样式,属性名和属性值用冒号隔开,属性名可以不用加引号,每组样式之间使用逗号分隔

    $('div').css({width:300px,height:300px})——不加引号

    $('div'.css({'width':'300px','hieght':'300px'}))——加引号

    • 对于那些有破折号连接的属性(即复合属性)就使用驼峰命名法书写属性名,如backgrounColor:"red"

    • 对于不是数字的属性值必须使用引号书写

3.2.2 设置类样式方法

作用等同于以前的classList,可以操作类样式,注意操作类里面的参数不要加点

3.2.2.1 添加类

$('div').addClass('类名')

3.2.2.2 删除类

$('div').removeClass('类名')

3.2.2.3 切换类

$('div').toggleClass('类名')

案例:Tab栏的切换

3.2.3 类操作与className的区别

  • 原生的js中的className会覆盖式元素原先里面的类名

比如原来的类名是a,用className指定新类名之后b之后就变成b了,没有a这个类名了 class=“a”

  • jQuery里面的类操作只是对指定类进行操作,不影响原先的类名

比如给元素新添加一个类为b 则元素既有原来的类又有新的类 class=“a b”

删除也是这个道理


3.3 jQuery效果、

jQuery给我们封装了很多动画效果,常见如下:

  • 显示隐藏

    • show()

    • hide()

    • toggle()

  • 滑动

    • slideDown()

    • slideUp()

    • slideToggle()

  • 淡入淡出

    • fadeln()

    • fadeOut()

    • fadeToggle()

    • fadeTo()

  • 自定义动画

    • animate()

3.3.1 显示和隐藏效果

show([speed,[easing],[fn]])——显示效果

hide([speed,[easing],[fn]])——隐藏效果

toggle([speed,[easing],[fn]])——切换效果

里面的参数是可以省略的,这样就无动画显示效果

  • speed:三种预设速度之一的字符串(“show” ,”normal”,”fast”)或者表示动画时长的毫秒数值(如:1000)

  • earing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”

  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

一般情况下都不加参数的,动画效果比较难看

3.3.2 滑动效果

slideDown([speed,[easing],[fn]])——下拉效果

slideToggle([speed,[easing],[fn]])——切换效果

slideUp([speed,[easing],[fn]])——上拉效果

参数都可以省略

  • speed:三种预设速度之一的字符串(“show” ,”normal”,”fast”)或者表示动画时长的毫秒数值(如:1000)

  • earing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”

  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

3.3.3 事件切换

hover([over,]out)

  • over是鼠标移动到这个元素上要触发的函数(相当于mouseover

  • out是鼠标离开元素的时候要触发的函数(相当于mouseleave

如果只写一个函数那么鼠标经过和离开都会触发这个函数,所以要同时使用两个效果可以这样写

3.3.4 动画队列及其停止排队方法

3.3.4.1 动画或效果队列

动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行

3.3.4.2 停止排队

stop()

  • stop()方法用于停止动画或效果

  • 注意:stop()写到动画或者效果的前面,相当于停止结束上一次的动画

3.3.5 淡入淡出效果

fadeIn([speed],[earing],[fn])——淡入

fadeOut([speed],[earing],[fn])——淡出

fadeToggle([speed],[earing],[fn])——切换效果

参数都可以省略

  • speed:三种预设速度之一的字符串(“show” ,”normal”,”fast”)或者表示动画时长的毫秒数值(如:1000)

  • earing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”

  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次

fadeTo([speed],opacity,[earing],[fn])——修改透明度

  • opacity透明度必须要写,取值为0~1

  • speed:三种预设速度之一的字符串(“show” ,”normal”,”fast”)或者表示动画时长的毫秒数值(如:1000),必须写

  • earing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”,可省略

  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次,可省略

案例:高亮显示

3.3.6 自定义动画animate

语法

animate(params,[speed],[earing],[fn])

  • params:想要更改的样式属性,以对象形式传递,必须写,属性名可以不用带引号,如果是复合属性则需要采用驼峰命名法,其余参数都可以省略

  • speed:三种预设速度之一的字符串(“show” ,”normal”,”fast”)或者表示动画时长的毫秒数值(如:1000)

  • earing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”

  • fn:回调函数,在动画完成时执行的函数,每个元素执行一次


3.4 jQuery属性操作

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

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

语法:

$('a').prop('herf')

语法:

prop('属性','属性值')

$('a').prop('title','this is a typ')

3.4.2 设置获取自定义属性值 attr()

元素的自定义属性是通过attr获取的

3.4.3 数据缓存 data()

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

$('div').data('index')——获取H5自定义元素属性,不用写data- 而且返回的是数字型

案例:购物车全选

3.5 jQuery内容文本值

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

3.5.1 普通元素内容html()(相当于原生innerHTML)

3.5.2 普通元素文本内容text()(相当于原生的innerText)

3.5.3 表单的值val()(相当于原生的value)

3.6 jQuery元素操作

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

3.6.1 遍历元素each()方法

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

each()方法遍历元素

语法

语法1:

$('div').each(function(index,domEle){xxx})——遍历元素

语法2:

$.each(object,function(index,element){xxx})——主要用于遍历数据,处理数据

3.6.2 创建元素

语法:

$("<li></li>")——创建元素,动态的创建了一个li标签

3.6.3 添加元素

3.6.4 删除元素

3.7 jQuery事件

3.7.1 jQuery事件注册

element.事件(function(){})

$('div').click(function(){})

其他事件和原生基本一致

比如mouseover、mouseout、blur、focus、change、keydown、keyup、resize、scroll

3.7.2 jQuery 事件处理

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

element.on(events,[selector],fn)

  1. events是一个或多个事件类型,用空格分隔的事件类型

  2. selector元素的子元素选择器

  3. fn回调函数,即绑定在元素身上的侦听事件

3.7.3 事件解绑0ff()

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

3.7.4 事件触发一次one()

如果只想要事件触发一次则可以使用one()方法来绑定事件

3.7.5 自动触发事件trigger()

3.7.6 jQuery事件对象

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

element.on(events,[selector],function(event){})

3.8 jQuery其他方法

3.8.1 jQuery拷贝对象

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

语法:

$.extend([deep],taget,object1,[objectN])

 

3.8.2 多库共存

jQuery使用$符号作为标识符,随着jQuery的流行,其他js库也会用$作为标识符,这样一起使用就会引起冲突

需要一个解决方案,让jQuery和其他js库不存在冲突,可以同时存在,这就叫多库共存

3.8.3 jQuery插件

jQuery功能比较有限,想要实现更复杂的效果,可以借助jQuery插件完成

注意:这些插件也是依赖jQuery来完成的,所以必须要先引入jQuery文件,因此也称为jQuery插件

jQuery插件网站:

Bootstrap框架也是依赖于jQuery开发的,因此里面的js插件使用,也必须引入jQuery文件

3.9 jQuery尺寸、位置操作

3.9.1 jQuery尺寸

语法用法
width()/height()取得匹配元素的宽度和高度 只算width和height
innerWidth()/innerHeight()取得匹配元素的宽度和高度 包含padding
outerWidth()/outerHeight()取得匹配元素的宽度和高度 包好padding、border
outerWidth(true)/outerHeight(true)取得匹配元素的宽度和高度 包含padding、border、margin
  • 以上参数为空,则是获取相应的值,返回的是数字型

  • 如果参数为数字,则是修改相应值

3.9.2 jQuery位置

位置主要有三个:offset()、position()、scrollTop()/scrollLeft()

offset()设置或获取元素偏移
  • offset()方式设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系,返回的是一个对象

  • 该方法有两个属性:left、top。

  • 可以设置元素的偏移:offset({top:300,left:400})

position()获取元素偏移
  • position()方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级没有定位,则以文档为准

  • position()方法只能获取元素的偏移坐标不能设置偏移坐标

scrollTop()/scrollLeft()设置或获取元素被卷去的头部和左侧
  • scrollTop()方法设置或返回被选元素被卷去的头部

  • scrollTop()如果里面写了参数,但页面刷新时就会直接跳转到该位置,scrollLeft()同理

Leave a Reply

Your email address will not be published. Required fields are marked *

Other My Posts