jQuery笔记

目录

1 jQuery基础

1.1 javaScript库

1.2 基本使用

1.2.1 入口函数

1.2.2 jQuery顶级对象

1.2.3 DOM对象和jQuery对象

1.2.4 DOM对象和jQuery对象的转换

1.2.4 jQuery选择器

1.2.5 jQuery的隐式迭代

1.2.6 jQuery筛选选择器

1.2.7 jQuery筛选方法

1.2.8 jQuery绑定事件

1.2.9 链式编程

2 jQuery样式操作

2.1 操作css方法$(对象).css()

2.2 设置类样式方法

2.3 jQuery类操作和className的区别

3 jQuery的动画效果

3.1 显示隐藏和切换

3.2 下拉上拉和切换

3.3 hover事件切换

3.4 动画排队问题解决

3.5 淡入淡出动画

3.6 animate()自定义动画

4 jQuery属性操作

4.1 设置或获取元素的属性

4.2 获取html值和表单值的内容

5 jQuery元素操作

5.1 遍历元素

5.2 创建添加删除元素

5.2.1 添加元素

5.2.2 删除元素

6 jQuery尺寸和位置操作

6.1尺寸

6.2 jQuery位置

7 jQuery事件

7.1 事件注册

7.1.1 jQuery单个事件注册

7.1.2 事件处理on

7.1.3 off()事件解绑

7.1.4 事件自动触发

7.2 事件处理

7.2.1 阻止默认和冒泡

 ​

8 插件的使用

8.1 插件常用网址

8.2 插件使用

8.3 图片的懒加载

8.4 bootstrap插件

8.5 本地存储问题

9 jQuery扩展

9.1 多库共存

 

重要部分>重点标注>次重要标注>理解说明

1 jQuery基础

1.1 javaScript库

即library,是一个封装好的特定的集合(方法和函数),从封装一大堆函数的角度理解库,就是在这个库中,封装了预先定义好的函数在里面

1.2 基本使用

1.2.1 入口函数

等着页面DOM加载完毕再去执行js代码(相当于原生js中的DOMContentLoaded)

  • $(document).ready(function() {执行代码});
  • $(function() {执行代码});     两个方法等价

1.2.2 jQuery顶级对象

$是jQuery的别称,$同时也是jQuery的顶级对象(相当于原生对象中window,能根据传入的参数不同做不同的事情)

代码中$可以完全替换jQuery,完全等价

可以获取元素\创建元素\转换为jQuery对象\调用工具方法

1.2.3 DOM对象和jQuery对象

(1)利用原生js获取过来的对象就是DOM对象

(2)jQuery对象:用jQuery方式获取过来的对象就是jQuery对象(通过$把DOM元素进行了包装,变成了伪数组形式)

(3)jQuery对象只能是jQuery方法,DOM对象只能使用原生js属性和方法,jQuery取过来的元素是伪数组形式

1.2.4 DOM对象和jQuery对象的转换

(1)获取jQuery对象

(2)获取DOM对象

(3)$("div"[index])  index是索引

$("div").get[index].play();

(4)DOM对象转换为jQuery对象:$(DOM元素名,不用引号)

1.2.4 jQuery选择器

把css选择器作为字符串传入到$方法中,就可以获取css选择器匹配到的元素,类似在querySelectAll中的传参

1.2.5 jQuery的隐式迭代

(1)$("div").css(“属性”,“值”)

(2)概念:就是把匹配的所有元素内部进行遍历循环,给每一个元素添加CSS这个方法,而不用我们再进行循环,简化我们的操作

1.2.6 jQuery筛选选择器

写在选择器里,eq的index从零开始,功能和nth-child类似

it(num),gt(num)小于num的大于num的

(2)jQuery中表单元素的选择

:input$(":input")所有 <input> 元素
:text$(":text")所有 type="text" 的 <input> 元素
:password$(":password")所有 type="password" 的 <input> 元素
:radio$(":radio")所有 type="radio" 的 <input> 元素
:checkbox$(":checkbox")所有 type="checkbox" 的 <input> 元素
:submit$(":submit")所有 type="submit" 的 <input> 元素
:reset$(":reset")所有 type="reset" 的 <input> 元素
:button$(":button")所有 type="button" 的 <input> 元素
:image$(":image")所有 type="image" 的 <input> 元素
:file$(":file")所有 type="file" 的 <input> 元素

1.2.7 jQuery筛选方法

(1)父 $().parent() //返回的是最近一级的父级标签

(2)子

  • 亲儿子:$().children()  //选择亲儿子(相当于子代选择器)

  • 所有孩子:$().find()   //类似于后代选择器

    • 必须要写参数,不写的话无法选择到

    • *写" * "代表选择全部

(3) 兄 可以不写参数

  • siblings() 可以找出所有的亲兄弟元素,但是不包括自己
  • nextAll ()找出当前元素之后的所有元素
  • prevAll()找出当前元素之前的所有元素
  • next() 获取下一个兄弟元素
  • prev() 获取上一个兄弟元素

(4)特殊

hasClass(class)检查当前的元素是否含有某个特定的类,如果是,则返回true

eq(index)相当于$(“li:eq(index)”)

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

1.2.8 jQuery绑定事件

jQuery对象.事件名(事件处理函数)

this代表当前元素$(this),不加引号,要绑定当前事件,仍要用this,this属于DOM事件不能用jQuery方法一般会把this转换为jQuery对象来使用——$(this)

show是显示元素,hide是隐藏元素

$(对象).index();获取当前元素的索引号,获取的索引号是真实的兄弟结构,无论是否同类标签

1.2.9 链式编程

元素设置方法后仍会返回调用该元素

2 jQuery样式操作

2.1 操作css方法$(对象).css()

(1)只写属性名,则返回属性值

获取的是jQuery对象伪数组中第一个对象的样式值

属性名后没有:

js中获取的是样式起作用的值(计算后样式)

div.style.属性 :对应的是行内样式,只能获取行内式的样式属性值,无法获取嵌入式和外链式的样式

(2)写属性名加属性值,修改样式。必须加引号,且用“,”分割,属性值为是数字的时候,可以不用引号也可以不加“,”。

(3)以对象的形式进行修改的时候,可以不加引号,用“,”分割,如果是复合属性则必须采用驼峰命名法,且属性值不是数字的时候必须加引号

2.2 设置类样式方法

(1)添加类

$(“div”).addClass("current")

(2)删除类

$(“div”).removeClass("current")

(3)切换类

$(“div”).toggleClass("current")

class的C必须大写,类名不加点

(4)hasClass判断有没有类名

2.3 jQuery类操作和className的区别

(1)className会覆盖原先的类名,而jQuery不会,className要想不覆盖需要将原有的类也新增的类都写上

(2)jQuery删除类不影响原先的类名

3 jQuery的动画效果

3.1 显示隐藏和切换

(1)显示隐藏

语法规范:show([speed,[easing],[fn]])

  • 参数都可以省略

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

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

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

(2)切换toggle()语法规范和参数和显示隐藏一致。

一般情况下,我们不加参数,直接使用

3.2 下拉上拉和切换

(1)语法规范:和显示隐藏相同

slideDown slideUp slideToggle

3.3 hover事件切换

(1)

(2)hover(function,function) 鼠标经过和离开分别触发不同的函数

事件切换hover如果只写一个函数,那个鼠标经过和鼠标离开都会触发这个函数

3.4 动画排队问题解决

(1)停止stop()

谁做动画就写在谁的前面,stop结束的是前面的动画

3.5 淡入淡出动画

fadeIn fadeOut fadeTo fadaTaggle

(1)渐进方式调整到指定的不透明度

其中fadeTo速度和时间必须写

3.6 animate()自定义动画

animate(params,[speed],[easing

],[fn])

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

其余参数都可以省略

不能改变没有中间状态的样式,颜色也无法做动画

鼠标经过某个item时,宽度变为600px,让其他item变为100px

animate函数的原理是定时器,而定时器声明有先有后,会造成一个问题,变化的过程中,总宽度会大于1000px,使得原来1000px宽的盒子装不下子盒子,一部分子盒子掉下去

4 jQuery属性操作

4.1 设置或获取元素的属性

(1)固有属性值prop()操作的是元素的属性(标签的固有属性会被浏览器翻译为对象的属性

  • 获取:element.prop(“属性名”) 获取属性值

  • 设置:element.prop(“属性名”,“属性值”)

(2)标签的自定义属性attr()操作的是标签的属性,参数写的是标签属性名,获取到的属性值一般是字符串

也可以获取H5自定义属性

因为设置的新标签属性不被翻译为对象的属性,所以prop无法获取其属性值,结果为undefined

(3)数据缓存data()这个里面的数据是存在元素的内存里面的

data为一个方法,会为对象创建一个属性,将数据存在其中,并且可以获取其属性值,不会改变其数据类型

获取与设置的方式与前两个相同

这个方法获取H5自定义属性,不用写data-开头,(data-开头的自定义属性存在对象dataSet属性中,)而且返回的是数字型

(4)(选择器:checked)属性,判断表单元素被选中的个数,返回的是伪数组。.length可以获取其长度

4.2 获取html值和表单值的内容

(1) 普通获取

ele.innerHTML

input.value

(2) jQuery获取

text获取的是选择出元素全部的值,不是第一个元素的值

(3) parents()可以找到当前元素的祖级(包括body,hrml)

closest("")获取离当前元素最近的符合选择器的祖先元素,不写参数无法获取元素

(4) toFixed(num)保留num位小数,超过的会四舍五入

5 jQuery元素操作

5.1 遍历元素

(1)语法一: $("div").each(function(index,domEle){})

  • 可以自己指定参数index,domEle名称
  • 第二个参数一定是DOM对象,需要使用DOM方法无法使用jQuery方法,需要转换
  • jQuery对象调用each方法
  • 也可以使用for循环来遍历jQuery对象(得到的是伪数组)
  • $(domEle)等价于$("选择器").eq(index)

(2)语法二:$:each({目标数据},function(i,ele)) 遍历数组时,i表示索引,ele表示数组元素

  • 第一个参数表示遍历到的属性名
  • 第二个参数表示遍历到的属性值

5.2 创建添加删除元素

(1)创建元素

  • var li = $("<li></li>")
  • 创建出来的是jQuery对象,是可以调用jQuery方法的
  • 新添加的元素li是以伪数组的形式表现,要想直接选取出来需要li[0]来选取

5.2.1 添加元素

(1)内部添加

  • $("ul").append(li)  //添加到内容最后面
  • $("ul").preppend(li)  //添加到内容最前面

(2)外部添加

  • var div = $("<div></div>")
  • element.after/before("内容")
  • 内部添加,生成之后他们是父子关系
  • 外部添加,生成之后他们是兄弟关系

5.2.2 删除元素

  • elelment.remove() //删除匹配的元素
  • element.empty(); //删除匹配子元素的子节点(清空元素的所有内容)
  • element.html("") //和第二个相似

6 jQuery尺寸和位置操作

6.1尺寸

  • 以上参数为空,为获取
  • 以上参数为数字,是修改
  • 参数不必写代码

6.2 jQuery位置

(1)offset设置的距离文档的距离

  • 和父级没有关系(无论父级有没有定位)
  • 返回的是一个对象,包括left和top
  • offset().top/left获取顶部和左边
  • 如果设置的盒子在父盒子中,添加offset需要其在父盒子定位时,会自动为其添加定位

(2)position()带有定位的父级坐标,父级没有定位,以文档为标准

   只能获取不能设置偏移

(3)scrollTop和ScrollLeft被卷去的头和左边,不止获取也可以设置,

做动画时只能是html和body元素做动画,因为document

$(document).stop().animate({

                //     scrollTop: 0

                // }); 不能是文档做动画,而应是html和body元素做动画化,document包含的东西太多,只需页面做动画

案例bug原因:

JS代码执行速度大于UI引擎渲染的速度

js执行完毕后,UI渲染速度过慢,第四个li的点击事件执行完毕,li变色,但页面仍在滚动中,继续执行滚动的事件,由于滚动只滚动到第四个li之前,所以最后导致变色停留着第三个li那里

7 jQuery事件

7.1 事件注册

7.1.1 jQuery单个事件注册

(1)语法: $(ele).click(function() {})

(2)内部使用侦听addEventListener注册事件,所以同名事件可以依次触发

(3)只能给已经存在的元素注册事件,新添加的不可以

7.1.2 事件处理on

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

(1)语法一:$("div").on({

事件一: function(){

};

事件二:function() {

};

});

事件处理程序一样时,可以采用下面的写法,语法二:

$("div").on("事件类型一 事件类型二",function(){

})

(2)on可以实现事件委托(为新添加的元素绑定事件)

$("父选择器").on("事件类型","后代选择器(触发对象)",function(){

});

  • this指向的是触发对象
  • 选择器可以是类名,id名
  • click绑定在父元素身上,触发对象是后代元素
  • 可以给未来动态创建的元素绑定事件

7.1.3 off()事件解绑

(1)off()为空这个是解除了元素上的所有事件

(2)off("事件类型"/"事件类型",“触发对象”)解除指定的事件类型/事件委托

解绑事件委托,事件本身还存在

(3)one()事件,只能触发一次事件,其余特性和on相似

7.1.4 事件自动触发

(1)$("选择器").事件();

(2)$("选择器").trigger("事件");

(3)$("选择器").triggerHandler("事件"); //不会触发元素的默认行为

自动触发事件相当于,调用对象的方法函数()

7.2 事件处理

7.2.1 阻止默认和冒泡

 

8 插件的使用

8.1 插件常用网址

8.2 插件使用

8.3 图片的懒加载

当我们图片滑动到可视区域,再显示图片

此插件必须写在所有DOM元素(图片)的下面或者写在页面加载事件里

8.4 bootstrap插件

(1)引入bootstrapcss文件

(2)引入jQuery文件

(3)引入bootstrapjs文件

(4)复制组件代码

8.5 本地存储问题

  • 把我们的数组对象转换为字符串格式JSON.stringify()(数据的格式有严格要求,所以最好使用此方法转换)
  • 获取本地存储的数据,我们需要把里面的字符串数据转换为对象格式JSON.parse()     
  • 当本地储存为空时,getIem获取的值是null

jQuery中index()获取的是其在父元素中的索引值,而不是$获取的元素数组中的索引.

dblclick双击事件

9 jQuery扩展

9.1 多库共存

(1)别人已经使用$,使用jQuery

(2)别人使用了jQuery和$,在失效之前传递控制权给别的变量,var XX = $.noConflict()

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值