jQuery的基本操作

一、了解jQuery

特点:选择器,隐式迭代(遍历),链式编程
类库:比人封装好了一些方法,放在一个js文件里,只需引入。

学习网站

js选择器

1.基本选择器
$(选择器)
css选择器怎么选,括号里面就可以怎样写
注意:
1.如果用id选择器,那么只能拿到一个元素
2.如果你用的是其他的选择器,那么有多少就获取多少(迭代)
3.不管拿到多少个元素,都是放在一个元素集合里面返回
2.特殊选择器
专属于jQuery的特殊选择器
1.:first 表示选中第一个元素 $(‘div:first’)
2.:last 表示选中的最后一个元素 $(‘div:last’)
3.:eq(索引) 表示索引第几个 $(‘div:eq(3)’)
4.:odd 表示索引为奇数的元素 $(‘div:odd’)
5.:even 表示索引为偶数的元素 $(‘div.even’)
3.筛选器
1.first() 表示第一个 $(‘div’).first()
2.last() 表示最后一个 $(‘div’).last()
3.eq() 表示索引第几个 $(‘div’).eq(3)
4.prev() 获取上一个兄弟元素 $(‘div’).prev()
5.prevAll() 拿到上面所有兄弟元素 $(‘div’).prevAll() || prevAll(选择器)拿到上面兄弟中符合选择器条件的

6.prevUntil() 拿到上面所有的兄弟元素, ( ′ d i v ′ ) . p r e v U n t i l ( ) ∣ ∣ ∣ p r e v U n t i l ( 选 择 器 ) 拿 到 上 面 所 有 的 兄 弟 节 点 , 直 到 符 合 选 择 器 条 件 的 元 素 为 止 ( 向 上 查 找 , 一 有 符 合 条 件 的 就 停 止 查 找 , 将 查 找 到 的 选 中 ) ('div').prevUntil() ||| prevUntil(选择器)拿到上面所有的兄弟节点,直到符合选择器条件的元素为止(向上查找,一有符合条件的就停止查找,将查找到的选中) (div).prevUntil()prevUntil()(‘div’).prevUntil(选择器)
7.next() 获取下一个兄弟节点 $(‘div’).next()
8.nextAll() 获取下面所有的兄弟元素 ( ′ d i v ′ ) . n e x t A l l ( ) n e x t A l l ( 选 择 器 ) 拿 到 下 面 所 有 选 择 器 中 符 合 条 件 的 9. n e x t U n t i l ( ) 拿 到 下 面 所 有 的 兄 弟 元 素 , ('div').nextAll() nextAll(选择器) 拿到下面所有选择器中符合条件的 9.nextUntil() 拿到下面所有的兄弟元素, (div).nextAll()nextAll()9.nextUntil()(‘div’).nextUntil() ||| nextUntil(选择器)拿到下面所有的兄弟节点,直到符合选择器条件的元素为止(向下查找,一有符合条件的就停止查找,将查找到的选中)$(‘div’).prevUntil(选择器)
10.parents() 拿到所有结构父元素节点,直到html $(‘div’).parents() |||| parents(选择器) 拿到所有结构父元素节点中符合选择器条件的,直到html $(‘div’).parents(选择器)
11.parent() 获取父元素 $(‘div’).parent()
12.parentsUntil() 获取所有结构父元素节点 parentsUntil(选择器) 拿到所有结构父元素节点直到选择器元素位置
13.find() 元素集合.find(选择器) 在所有后代元素中查找符合选择器的元素
14.index()元素处在父元素的索引位置,返回值:是一个数字,表示这个元素在他的父元素里面是索引第几个的元素,注意:指的不是元素里面的索引,而是真实在他结构父级下的索引
15.siblings() 元素集合.siblings() 获取所有兄弟元素
4.操作元素文本内容
1.html() $(‘div’).html()
是一个读写属性
不传参数的时候,表示读取元素内的超文本内容
传递一个参数的时候,表示设置元素内容的文本内容(完全覆盖式的写入)
2.text() $(‘div’).text()
是一个读写属性
不传参数的时候,表示读取元素内的文本内容
传递一个参数的时候,表示设置元素内容的文本内容(完全覆盖式的写入)
3.val() $(‘div’).val()
是一个读写属性
不传参数的时候,表示读取文本元素的value值
传递一个参数的时候,表示设置元素的value值(完全覆盖式的写入)
5.操作元素类名
1.addClass() 添加类名
元素集合.addClass(“要添加的类名”)
2.removeClass() 删除类名
元素集合.removelass(“要删除的类名”)
3.hasClass() 判断类名是否有
元素集合.hasClass(要判断的类名)
返回值:一个布尔值
true:表示有这个类名
false:表示没有这个类名
4.toggleClass() 切换类名
元素集合.toggleClass(要切换的类名)
作用:切换类名,有就删除,没有就添加
6.操作元素样式
1.css()
传递一个字符串表示获取该样式的值
语法:元素集合.css(“width”)
行内和非行内都可以获取
传递俩个参数用来获取该样式的值
语法:元素集合.css(‘width’,“100px”)
如果你需要添加的单位是px,那么可以不写
传递一个对象作为参数
语法:元素集合.css({width:xxx,height:xxx})
批量设置元素样式
7.操作元素属性

1.attr()和removeAttr()
attr()
是一个读写的方法
语法一:
元素集合.attr(“属性名”)
获取该元素该属性的值
语法二:
元素集合.attr(‘属性名’,‘属性值’)
设置元素该属性的值
removeAttr()
语法:元素集合.removeAttr(‘属性名’)
删除元素的该属性

注意:
1.是一个类似于setAttribute/getAttribute
可以删除和设置原生属性,也可以操作自定义属性
2.设置的自定义属性直接显示在标签上
3.设置的任何值,都会变成字符串形式写在标签上
不管你设置的时候是什么数据类型
你将来获取出来的都是字符串类型
4.removeAttr() 只能删除attr()设置的自定义属性,不能删除prop()设置的自定义属性

2…prop()和removeProp()
prop()
语法1: 元素集合.prop(‘属性名’) 获取元素该属性的值 语法2: 元素集合.prop(‘属性名’,‘属性值’) 设置元素该属性的值
removeProp()
语法:元素集合.removeProp(‘属性名’) 删除元素的该属性

注意:
1.prop 一套可以设置自定义属性,也可以设置原生属性
2.removeProp()只能删除自定义属性,不能删除原生属性,不能删除 attr() 设置的自定义属性
3.prop()设置的自定义属性不会显示在标签上
而是把这个DOM元素当成一个对象,添加在他的身上
4.prop()存储是把元素当做对象,存储数据

3.data()和removeData()
data()
语法1:元素集合.data(“属性名”)
获取data()方法存储起来的数据
还能获取元素标签上data-xxx的属性(只要写data-后面的名字就可以获取)
语法2:元素集合.data(“属性名”,“属性值”)
设置一个属于data的自定义属性
设置的属性不存储在标签上而是将DOM元素当作一个对象,而在他身上再次开辟一个对象,存储在里面removeData()
语法:元素集合.removeData(“属性名”)
删除元素中data()存储起来的数据
不能删除元素标签身上写的data-xxx的属性

7.jQuery操作元素的尺寸
原生js操作元素尺寸
元素.offsetWidth
元素.offsetHeight
元素.clientWidth
jQuery操作元素尺寸

1.width()和height()
语法:
元素集合.width()
元素集合 .height()
获取:元素的内容区域的尺寸

2.innerWidth()和innerHeight()
语法:
元素集合.innerWidth()
元素集合.innerHeight()
获取:
元素的内容区域 + padding的尺寸

3.outerWidth()和outerHeight()
语法:
元素集合.outerWidth()
元素集合.outerHeight()
获取:
元素的内容区域 + padding + border 的尺寸

4.outerWidth(true)和outerHeight(true)
语法:
元素集合.outerWidth(true)
元素集合.outerHeight(true)
获取:
元素的内容区域 + padding + border 的尺寸 +margin的尺寸

8.jquery操作节点
原生JS操作节点
创建节点
createElement()
createTextNode()
插入节点:
appendChild()
insertBefore()
删除节点()
removeChild()
remove()
替换节点:
replaceChild()
克隆节点
cloneNode()

jQuery操作节点

创建节点

$(“html格式的字符串”)

插入节点:

内部插入(父子关系的插入)
1.append()
语法:父节点.append(要插入的子节点)
2.appendTo()
语法:
要插入的子节点.appendTo(父节点)
将子节点插入到父节点里面,并且排列在最后
3.prepend()
语法:父节点.prepend(‘要插入的子节点’)
将子节点插入到父节点里面,并且排列在最前面
4.prependTo()
语法:
要插入的子节点.prependTo(父节点)
将子节点插入到父节点里面,并且排列在最前
5.insertBefore()
要插入的节点.insertBefore(已知节点)
把要插入的节点放在已知节点的前面一个
6.before()
已知节点.before(要插入的节点)
把要插入的节点放在已知节点的前面一个
5.insertAfter()
要插入的节点.insertAfter(已知节点)
把要插入的节点放在已知节点的后面一个
6.after()
已知节点.before(要插入的节点)
把要插入的节点放在已知节点的后面一个

删除节点

1.remove()
语法:元素集合.remove()
作用:把元素直接移除
2.empty()
语法:元素集合.empty()
作用:把自己变成一个空标签

替换节点

1.replaceWith()
语法:被替换节点.replaceWith(“替换节点”)
作用:使用替换节点,把被替换节点换掉

2.replaceAll()
语法:被替换节点.replaceAll(“替换节点”)
作用:使用替换节点,把被替换节点换掉

克隆节点

1.clone()
语法 : 元素集合.clone()
第一个参数
默认是false,表示不克隆自己的事件
选填 true,表示克隆自己的事件
第二个参数
默认是跟随第一个,表示是否克隆后代元素的事件
如果第一个参数是false,第二个参数没有意义
如果不想克隆后代节点
( ′ d i v ′ ) . c l o n e ( t r u e ) . e m p t y ( ) . i n s e r t A f t e r ( ('div').clone(true).empty().insertAfter( (div).clone(true).empty().insertAfter((’.a’))

9.jQuery元素的偏移量
1.offset()
是一个读写属性
读:
元素集合.offset()
返回值:一个对象数据类型,里面有左边和上边的偏移量,相对于页面文档流的左上角
写:
元素集合.offset({left:xxx,top:xxx})
绝对设置,不管你在哪里,不管是以什么方式进行偏移,一定给你移动到距离页面左上角的指定位置
2.position()
是一个只读的方法
读:
元素集合.position()
返回值:一个对象数据类型,里面有这个元素的定位设置的值(left,top)
但是如果你设置的是right和bottom,会自动计算left和top值给你
解释:
1. 如果我的定位父级不是我的结构父级. position 拿到的值就做用在我的 结构父级身上
2. 如果我的定位父级是我的结构父级, position 拿到的值才是作用在我身上
3. 当作用在父级身上的时候, 拿到的是偏移量
=> 只有作用在自己身上的时候, 拿到的才是定位的值
=> 注意:
+ 使用 position 的时候
+ 需要保证你自己的定位父级就是你的结构父级
+ 不然拿不到准确的值

10.jQuery的事件绑定
1.on方式进行事件绑定
语法1:
元素集合.on(“事件类型”,事件处理函数)
标准绑定事件,带有隐式迭代(元素集合能获取几个个元素,就有多少个元素绑定事件)
语法2:
元素集合.on(‘事件类型’,‘选择器’,事件处理函数)
事件委托形式,把选择器元素的事件委托给元素集合
只有当你点击元素集合中,符合选择器元素的时候,才会触发(在jQuery的事件处理函数中,this指向准确触发事件的目标,而不是事件源)
语法3:
元素集合.on(“事件类型”,复杂数据类型,事件处理函数)
这给元素集合绑定事件的,这个复杂数据类型,是在事件触发的时候,给事件处理函数传递的参数
参数在事件处理函数里面通过事件对象e里面的data数据拿到
语法4:
元素集合.on('事件类型’,‘选择器’,‘参数’,‘事件处理函数’)
事件委托的形式,并且带有传递给事件处理函数的参数
语法5:
元素集合.on({
事件类型1:事件类型1的事件处理函数
事件类型2:事件类型2的事件处理函数
})
可以同时给一个元素集合绑定多个事件

2.one()方法进行事件绑定
和on方法传递参数的方式一模一样
只不过绑定的事件只能执行一次
注意:事件委托的时候,只有点击其中一个元素好使,再点击其他的就不好使了

3.off()方法进行事件解绑
语法1:
元素集合.off(“事件类型”)
将该事件类型的所有事件处理函数全部解绑
语法2:
元素集合 .off(“事件类型”,“、要解绑的事件处理函数”)
将该事件指定事件处理函数解绑

4.trigger()
语法:元素集合.trigger(“事件类型”)
作用:就是把元素集合里面所有元素身上的指定事件触发

jQuery常用事件绑定
jQuery把常用的事件做成了函数,自己调用就可以
click()
mouseover()
mouseout()
举例:
语法1:
元素集合.click(事件处理函数)
给元素集合内的每一个元素绑定一个click事件
语法2:
元素集合.click(参数,事件处理函数)
给事件处理函数传递参数
接收还是在e事件对象的data成员里面

jQuery的唯一一个特殊事件对象
hover事件
语法:元素集合.hover(鼠标移入的时候的事件处理函数,鼠标移出的时候的事件处理函数)
注意:如果你只传递一个函数,那么移入移出都只触发这一个函数

11.jQuery的运动函数
1.标准运动函数
show() 展示
hide() 隐藏
toggle()切换
语法:元素集合.show(时间,(毫秒),运动曲线,运动结束执行的函数)

2.折叠动画
slideDown() 下拉显示
slideUp 上拉隐藏
slideToggle()切换和隐藏
语法:元素结合.slideDown(时间,运动曲线,运动结束时的函数)
3.渐隐渐显动画
fadeIn()渐渐的显示
fadeOut()渐渐的消失
fadeToggle()渐渐的切换
语法:元素集合.fadeIn(时间,运动曲线,运动结束后的函数)
fadeTo()将被选中元素的不透明度逐渐改变为指定的值
语法:元素集合.fadeTo(时间,指定透明度,运动曲线,运动结束后的函数)

4.综合动画函数
animate()
语法:
元素集合.animate({要运动的属性},时间,运动曲线,运动结束函数)
注意:运动的属性,颜色不能动,transfoem不能动
5.停止动画
stop()
语法:
元素集合.stop()
当stop()执行的时候,不管动画运动到哪,直接停止
finish()
语法: 元素集合.finish()
当 finish() 执行的时候, 不管动画运动到什么地步了, 直接去到完成状态

12.jQuery的ajax函数
在jQuery里面有一个叫做ajax的函数,因为和DOM操作没有关系,不需要选择就能调用
语法:
$.ajax()
是 j q u e r y 向 外 暴 漏 的 一 个 名 字 , 是 一 个 函 数 , 函 数 也 是 一 个 对 象 , 把 是jquery向外暴漏的一个名字,是一个函数,函数也是一个对象,把 jquery这个函数当做一个对象,向里面存储了一个叫做ajax的函数

使用方式:

$.ajax({
对象里面全是本次ajax请求的配置信息
url:‘请求地址’, 必填
method:‘传递方式’,默认是GET
data:‘传递给后端的数据’, 默认为‘’
可以写成‘key=value&key=value’
也可以写成{key:value,key2:value}
anync:是否异步, //默认是true
dataType:‘期望后端返回的数据类型’ 默认为string
如果是string表示不进行任何解析
如果是json,表示会自动执行JSON.parse()
如果是xml,表示会自动解析xml格式的文本
success:成功的回调函数
error:失败的回调函数
本次请求失败的时候触发
失败不光是失败算失败解析失败也算失败
timeout:事件事件单位是ms //默认为永久
设置了以后,如果在指定事件内,没有得到服务器响应
那么直接结束本次请求,判断失败
context:回调函数中的this指向,//默认是jQuery封装的ajax对象
cache:是否缓存// 默认是true, 表示不缓存
会自动给你添加一个参数,叫做_
值就是一个时间戳
})

  1. jQuery和ajax相关的函数

$.ajax()可以发送任何方式的请求
专门封装了两个方法
$.get() =>专门用来发送get请求
$.post() =>专门用来发送post请求
这个三个函数都是按照Promise的形式封装的

1. . g e t ( ) 语 法 : .get() 语法: .get().get(地址,参数,成功的回调,期望返回的数据类型)
2. . p o s t ( ) 语 法 : .post() 语法: .post().post(地址,参数,成功的回调,期望返回的数据类型)

3.jQuery封装的全局ajax构造函数(生命周期函数)
生命周期:从生到死
ajax的生命周期:发送->接收->结束
jQuery一共封装了六个全局钩子函数

1.$(window).ajaxStart(function(){})
表示同级作用域下的多个ajax中,第一个ajax开始的时候,会触发这个钩子函数

2.$(window).ajaxSend(function(){})
每一个请求执行send步骤之前,会触发这个钩子函数,只要有一个请求发出去了,就会触发

3.$(window).ajaxSuccess(function(){})
每一个请求成功后,会触发这个钩子函数
只要有一个请求成功了,就会触发一次

4.$(window).ajaxError(function(){})
每一个请求失败之后,会触发这个钩子函数
只要有一个请求失败了,就会触发一次

5.$(window).ajaxComplete(function(){})
每一个请求完成之后,会触发这个钩子函数
只要有一个请求完成了,不管成功还是失败就会触发

6.$(window).ajaxStop(function(){})
表示同级作用域下的多个ajax中
最后一个ajax完成以后,会触发这个钩子函数

13.jquery的入口函数
jQuery的入口函数
类似与window.onload的函数
语法: ( w i n d o w ) . r e a d y ( f u n c t i o n ( ) ) 简 写 语 法 : (window).ready(function(){}) 简写语法: (window).ready(function())(function(){console.log(‘入口函数’)})
和onload的区别
window.onload是在所有资源(图片,视频。。。)加载完毕后触发
$().ready()是在DOM结构加载完毕后触发

14.jQuery的遍历函数
jQuery里面给了一个专门遍历jQuery元素集合的方法
叫做:each()
语法:元素集合.each(function(index,item){})
index就是每一次的索引
item就是元素集合内部的每一个元素

15.jQuery的多库并存
jQuery自己制作了一个方法,让自己交出变量控制权,
语法: . n o C o n f l i c t ( ) 这 个 代 码 一 执 行 , 表 示 j Q u e r y 不 占 用 .noConflict() 这个代码一执行, 表示jQuery不占用 .noConflict()jQuery这个变量了
语法: . n o C o n f l i c t ( t r u e ) 这 个 代 码 一 执 行 , 表 示 j Q u e r y 不 在 占 用 .noConflict(true) 这个代码一执行,表示jQuery不在占用 .noConflict(true)jQuery和jQuery这两个变量
返回值是一个新的控制权,只要指定一个变量接收就可以

16.jQuery的插件扩展机制

jQuery在封装的时候,向外暴漏了接口
你可以根据你的代码向jQuery里面添加一些方法
分为俩个机制
1. . e x t e n d ( 名 字 : 函 数 , 名 字 : 函 数 ) 向 j Q u e r y 本 身 扩 展 方 法 2. .extend({名字:函数,名字:函数}) 向jQuery本身扩展方法 2. .extend()jQuery2..fn.extend({名字:函数,名字:函数})
向jQuery的原型上扩展方法
使用的时候需要依赖元素集合调用$(选择器).名字()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值