(day47)jQuery
一、初识jQuery
(一)jQuery介绍
- jQuery是一个轻量级、兼容多浏览器的JavaScript库
- 可以极大的简化JavaScript编程,宗旨:“Write less,do more”
(二)版本介绍
- 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)
- 2.x:不兼容IE678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4 (2016年5月20日)
- 3.x:不兼容IE678,只支持最新的浏览器。需要注意的是很多老的jQuery插件不支持3.x版。目前该版本是官方主要更新维护的版本。
(三)jQuery对象
jQuery对象是通过jQuery包装DOM对象后产生的对象
jQuery对象是jQuery独有的
声明一个jQuery对象变量的时候在变量名前面加上$
jQuery对象只能使用jQurey对象的方法,不能使用DOM对象的方法,DOM对象亦然
$("#i1") // jQuery对象 $("#i1")[0] // DOM对象 $(js对象) // Js对象转化为jQuery对象
(四)相关网站
文档API:http://jquery.cuishifeng.cn/index.html
BootCDN:https://www.bootcdn.cn/jquery/
(五)基础语法
$(selector).action()
二、查找标签
(一)基本选择器
(1)id选择器
$("#id")
(2)标签选择器
$("tagName")
(3)class选择器
$(".className")
(4)条件选择器
$("div.c1") // 找到含有c1 class类的div标签
(5)所有元素选择器
$("*")
(6)分组选择器
$("#id, .className, tagName")
(二)层级选择器
(1)后代选择器
x的所有后代y(子子孙孙),x和y可以为任意选择器
$("x y")
(2)儿子选择器
x的所有儿子y(子标签)
$("x > y")
(3)相邻选择器
紧挨在x后面的y
$("x + y")
(4)兄弟选择器
x之后的所有兄弟选择器(平行标签)
$("x ~ y")
(三)属性选择器[]
- [attribute]:选择含有属性的标签
- p[attribute]:选择含有属性的p标签,中间不能有空格
- [attribute=value]:选择属性=值的标签
- p[attribute=value]:选择属性=值的p标签,中间不能有空格
$('[name]') // 含有name属性的标签
$('p[name]') // 含有name属性的p标签
$('[name="tank"]') // name属性为tank的标签
$('p[name="wick"]') // name属性为wick的p标签
(四)基本筛选器:
- :first:第一个
- :last:最后一个
- :eq(index):索引等于index的元素
- :even:匹配所有索引值为偶数的元素,从0开始计数
- :odd:匹配所有索引值为奇数的元素,从0开始计数
- :gt(index):匹配所有大于给定索引值的元素
- :lt(index):匹配所有小于给定索引值的元素
- :not(元素选择器):移除所有满足not条件的标签
- :has(元素选择器):选取所有包含一个或多个标签在其内的标签(从后代元素找)
$("div:has(h1)") // 找到所有后代中有h1的div标签
$("li:not(.c1)")// 找到所有不包含c1样式类的li标签
(五)表单筛选器
(1)input标签type参数值筛选
input标签中的type参数的值前加上冒号
$(':checkbox') // 找到所有type参数为checkbox的input标签
(2)表单对象属性
- :enabled
- disabled
- checked
- selected
// input标签对象属性筛选
<form>
<input name="email" disabled="disabled" />
<input name="id" />
</form>
$("input:enabled") // 找到可用的input标签
// select标签对象属性筛选
<select id="s1">
<option value="beijing">北京市</option>
<option value="shanghai">上海市</option>
<option selected value="guangzhou">广州市</option>
<option value="shenzhen">深圳市</option>
</select>
$(":selected") // 找到所有被选中的option
(3)BUG
- :checked会把input标签中的默认属性和select标签中的selected默认属性一起筛选出来
- 解决方法:$('input:checked'),通过标签限制
(六)、筛选器方法
(1)next
$('#id').next() // 下一个元素
$('#id').nextAll()
$('#id').nextUntil('#i2')
(2)prev
$('#id').prve() // 上一个元素
$('#id').prveAll()
$('#id').prveUntil('#i2')
(3)parent
$('id').parent() // 查找父元素
$('id').parents() // 查找所有的父元素
$("#id").parentsUntil() // 查找所有的父元素,知道某个元素为止
(4)儿子和兄弟元素
$('id').children() // 儿子们,所有的子元素
$("#id").siblings() // 兄弟们,所有的平行元素
(5)find
搜索所有与指定表达式匹配的元素
$('div').find("p")
// 等价于$('div p')
(6)filter
筛选出与指定表达式匹配的元素集合
$("div").filter(".c1") // 从结果集中过滤出有c1样式类的
// 等价于$('div.c1')
(7)补充
.first() // 获取匹配的第一个元素
.last() // 获取匹配的最后一个元素
.not() // 从匹配与元素的集合中删除与指定表达式匹配的元素
.has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素
.eq() // 索引值等于指定值的元素
三、操作标签
(一)样式操作
- addClass:添加指定的css类名
- removeClass:移除指定的css类名
- hasClass:判断样式存不存在
- toggleClass:切换class类名,如果有就移除,没有就添加
$('p').css('color','red')
// DOM操作
// tag.style.color = 'red'
(二)位置操作
- offset:获取匹配元素在当前窗口的相对偏移或设置元素位置
- position:获取匹配元素相对父元素的偏移
- scrollTop:获取匹配元素相对滚动条顶部的偏移,可用于回到顶部功能
- scrollLeft:获取匹配元素相对滚动条左侧的偏移
(三)尺寸
- height():文本
- width()
- innerWidth():文本+内边距
- innerHeight()
- outWidth():文本+内边距+边框
- outHeight()
(四)文本操作
html():html内容
text():文本内容
val():值
获取被选中的checkbox或radio的值
$("input[name='gender']:checked").val()
html() // 获取第一个匹配元素的HTML内容
html(val) // 设置所有匹配元素的html内容
text()// 取得所有匹配元素的内容
text(val)// 设置所有匹配元素的内容
val()// 取得第一个匹配元素的当前值
val(val)// 设置所有匹配元素的值
val([val1, val2])// 设置多选的checkbox、多选select的值
(五)属性操作
- 对于标签上有的能看到的属性和自定义属性都用attr
- 对于返回布尔值的比如checkbox、radio和option的是否被选中都用prop。
(1)attr
- attr(attrName):返回第一个匹配元素的属性值
- attr(attrName,attrValue):为所有匹配元素设置值
- attr({k1:v1,k2:v2}):为所有配元素设置多个值
- removeAttr():从每一个匹配的元素删除一个属性
(2)prop
- prop():获取属性
- prop(attrName,''):删除属性
注意:
1.x和2.x版本的jQuery中使用attr对checkbox和radio进行赋值操作时,会出bug,3.x版本则不会有这个问题。为了兼容性,在checkbox和radio的时候尽量使用特定的prop
<input type="checkbox" value="1">
<input type="radio" value="2">
<script>
$(":checkbox[value='1']").prop("checked", true);
$(":radio[value='2']").prop("checked", true);
</script>
(六)标签操作
(1)append
添加到指定元素内部的后面
$(A).append(B) // 把B追加到A内部最后
$(A).appendTo(B) // 把A追加到B内部最后
(2)prepend
添加到指定元素内部的前面
$(A).prepend(B) // 把B前置到A第一个子标签
$(A).prependTo(B) // 把A前置到B第一个子标签
(3)after
添加到指定元素外部的后面
$(A).after(B)// 把B放到A的后面
$(A).insertAfter(B)// 把A放到B的后面
(4)before
添加到指定元素外部的前面
$(A).before(B)// 把B放到A的前面
$(A).insertBefore(B)// 把A放到B的前面
(5)remove和empty
移除和清空元素
remove()// 从DOM中删除所有匹配的元素。
empty()// 删除匹配的元素集合中所有的子节点。
(6)replace
- replaceWith()
- replaceAll()
(7)clone
- clone():只克隆标签,不克隆事件
- clone(true):克隆标签,包括事件
<script>
// clone方法不加参数true,克隆标签但不克隆标签带的事件
$("#b1").on("click", function () {
$(this).clone().insertAfter(this);
});
// clone方法加参数true,克隆标签并且克隆标签带的事件
$("#b2").on("click", function () {
$(this).clone(true).insertAfter(this);
});
</script>
五、事件
(一)常用事件
click:点击
hover:鼠标悬浮
$('p').hover(函数1,函数2) // 1. 鼠标悬浮时触发函数1,移开时触发函数2 // 2. 如果只有一个函数,悬浮和离开时都会触发一次
blur:失去焦点
focus:聚焦
change:域内容发生改变
keyup:按键松开
input:可以实时监听input框内的实时变化
scroll:当用户滚动指定的元素时,会发生 scroll 事件
(二)事件绑定
(1)on
.on(events [,selector],function(){})
- events:事件
- selector:选择器(可选)
- function:事件处理函数
(2)off
.off(events [,selector],function(){})
off()
方法移除用 .on()
绑定的事件处理程序。
(三)阻止后续事件执行
- return false:常见阻止表单提交等
- e.preventDefalut()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>阻止默认事件</title>
</head>
<body>
<form action="">
<button id="b1">点我</button>
</form>
<script src="jquery-3.3.1.min.js"></script>
<script>
$("#b1").click(function (e) {
alert(123);
//return false;
e.preventDefault();
});
</script>
</body>
</html>
(四)事件冒泡
子标签触发事件后会逐层传递给父标签,称为事件冒泡
解决办法:e.stopPropagation();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>阻止事件冒泡</title>
</head>
<body>
<div>
<p>
<span>点我</span>
</p>
</div>
<script src="jquery-3.3.1.min.js"></script>
<script>
$("span").click(function (e) {
alert("span");
e.stopPropagation();
});
$("p").click(function () {
alert("p");
});
$("div").click(function () {
alert("div");
})
</script>
</body>
</html>
(五)事件委托
事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件。
$('body').on('click','button',function () {
alert('123')
})
// 通过这个可以在创建添加标签时,同时加上原标签的事件
(六)页面载入ready
当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。
$(document).ready(function(){
// 在这里写你的JS代码...
})
// 简写
$(function(){
// 你在这里写你的代码
})
六、动画效果
(一)基本
- show
- hide
- toggle
(二)滑动
- slideDown
- slideUp
- slideToggle
(三)淡入淡出
- fadeIn
- fadeOut
- fadeTo
- fadeToggle
(四)自定义
animate,可用于点击特效中
七、补充
(一)each
(1) $.each
相当于for循环,通用的迭代函数 ,无缝迭代对象和数组
li =[10,20,30,40]
$.each(li,function(i, v){
console.log(i, v);//index是索引,ele是每次循环的具体元素。
})
(2)$('').each
遍历一个jQuery对象,为每个匹配元素执行一个函数
// 为每一个li标签添加foo
$("li").each(function(){
$(this).addClass("c1");
});
jQuery对象会遍历jQuery集合中的元素(隐式迭代的过程 ),因此 上面的例子没有必要使用each()方法 :
$("li").addClass("c1"); // 对所有标签做统一操作
(3)终止each循环
在遍历过程中可以使用 return false
提前结束each循环。
(二).data()
不通过标签中的自定义属性来存储数据
- .data(key,value): 在匹配的元素上存储任意相关数据
- .data(key):取值
- .removeData(key):移除元素上的数据,不加key表示移除全部数据
$("div").data("k",100);//给所有div标签都保存一个名为k,值为100
$("div").data("k");//返回第一个div标签中保存的"k"的值
$("div").removeData("k"); //移除元素上存放k对应的数据
(day47)jQuery的更多相关文章
- jQuery入门(1)jQuery中万能的选择器
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery入门(4)jQuery中的Ajax应用
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery回调、递延对象总结(上篇)—— jQuery.Callbacks
前言: 作为参数传递给另一个函数执行的函数我们称为回调函数,那么该回调又是否是异步的呢,何谓异步,如:作为事件处理器,或作为参数传递给 (setTimeout,setInterval)这样的异步函数, ...
- 代码简洁的滑动门(tab)jquery插件
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org ...
- 商品描述(动画)--- jQuery
本文章实现是基于jQuery展示商品描述的一个功能 (1)鼠标移入显示描述内容,鼠标移开内容隐藏.先来看看一个先后效果. (2)jQuery所以的文件可以自行下载,也可以在我主页找到文件,右键文件名复 ...
- webform(九)——JQuery基础(选择器、事件、DOM操作)
JQuery -- 一个js函数包 一.选择器 1.基本选择器 ①id选择器:# ②class选择器:. ③标签名选择:标签名 ④并列选择:用,隔开 ⑤后代选 ...
- jQuery-1.9.1源码分析系列(二)jQuery选择器
1.选择器结构 jQuery的选择器根据源码可以分为几块 init: function( selector, context, rootjQuery ) { ... // HANDLE: $(&quo ...
- jQuery-1.9.1源码分析系列(二)jQuery选择器续1
在分析之前说一点题外话. ownerDocument和 documentElement的区别 ownerDocument是Node对象的一个属性,返回的是某个元素的根节点文档对象:即document对 ...
- jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选
前面分析了选择器的结构和几个解析函数,接下来分析jQuery对象的伪类选择器.这里所谓的jQuery对象的伪类选择器就是从已有的jQuery对象(元素集合)中筛选出指定的集合出来. 4. jQu ...
随机推荐
- JAVA学习知识杂烩
idea快捷键使用:https://blog.csdn.net/youanyyou/article/details/97072410 int值类型与引用类型比较的坑:https://www.cnblo ...
- 动手学深度学习14- pytorch Dropout 实现与原理
方法 从零开始实现 定义模型参数 网络 评估函数 优化方法 定义损失函数 数据提取与训练评估 pytorch简洁实现 小结 针对深度学习中的过拟合问题,通常使用丢弃法(dropout),丢弃法有很多的 ...
- HTML连载32-背景颜色、背景图片、背景填充
一.背景 1.如何设置标签的背景颜色 (1)在CSS中有一个background-color:属性值:,就是专门用来设置标签的背景颜色. (2)取值:具体单词.RGB.RGBA.十六进制 例子: &l ...
- Loj #2719. 「NOI2018」冒泡排序
Loj #2719. 「NOI2018」冒泡排序 题目描述 最近,小 S 对冒泡排序产生了浓厚的兴趣.为了问题简单,小 S 只研究对 *\(1\) 到 \(n\) 的排列*的冒泡排序. 下面是对冒泡排 ...
- 快速认识springcloud微服务
这周浅显的学习了springcloud.简单聊一下微服务.所谓的微服务远远没有我想想的那么高端难以理解,简单说,就是多个服务分布在不同的服务器上,由这些服务互相配合完成某一项任务.那服务和服务之间调用 ...
- 送书『构建Apache Kafka流数据应用』和『小灰的算法之旅』和『Java并发编程的艺术』
读书好处 1.可以使我们增长见识. 2.可提高我们的阅读能力和写作水平. 3.可以使我们变的有修养. 4.可以使我们找到好工作. 5.可以使我们在竞争激烈的社会立于不败之地. 6.最大的好处是可以让你 ...
- 我是如何理解并使用maven的
前言 一直想写一篇关于Maven的文章,但是不知如何下笔,如果说能使用,会使用Maven的话,一.两个小时足矣,不需要搞懂各种概念.那么给大家来分享下我是如何理解并使用maven的. 什么是Maven ...
- ng 判定输入的手机号是否正确
判定输入的手机号是否正确 infoConfirm(){ if (!/^1[3456789]\d{9}$/.test(this.mobile)) { this.pho ...
- python yield: send, close, throw
send 1. yield可以产出值,可以接收值 2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种 a. gen.send(None) b. next(gen) def ...
- 给 VS2017、VS2019 安装 ILSpy 插件
关于 ILSpy is the open-source .NET assembly browser and decompiler. ILSpy 主页地址:https://github.com/icsh ...