目录

一、初识jQuery

(一)jQuery介绍

  1. jQuery是一个轻量级、兼容多浏览器的JavaScript库
  2. 可以极大的简化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对象

  1. jQuery对象是通过jQuery包装DOM对象后产生的对象

  2. jQuery对象是jQuery独有的

  3. 声明一个jQuery对象变量的时候在变量名前面加上$

  4. jQuery对象只能使用jQurey对象的方法,不能使用DOM对象的方法,DOM对象亦然

    $("#i1")  // jQuery对象
    $("#i1")[0]  // DOM对象
    $(js对象)  // Js对象转化为jQuery对象

(四)相关网站

官网:http://jquery.com

文档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")

(三)属性选择器[]

  1. [attribute]:选择含有属性的标签
  2. p[attribute]:选择含有属性的p标签,中间不能有空格
  3. [attribute=value]:选择属性=值的标签
  4. p[attribute=value]:选择属性=值的p标签,中间不能有空格
$('[name]')  // 含有name属性的标签
$('p[name]')  // 含有name属性的p标签
$('[name="tank"]')  // name属性为tank的标签
$('p[name="wick"]')  // name属性为wick的p标签

(四)基本筛选器:

  1. :first:第一个
  2. :last:最后一个
  3. :eq(index):索引等于index的元素
  4. :even:匹配所有索引值为偶数的元素,从0开始计数
  5. :odd:匹配所有索引值为奇数的元素,从0开始计数
  6. :gt(index):匹配所有大于给定索引值的元素
  7. :lt(index):匹配所有小于给定索引值的元素
  8. :not(元素选择器):移除所有满足not条件的标签
  9. :has(元素选择器):选取所有包含一个或多个标签在其内的标签(从后代元素找)
$("div:has(h1)")  // 找到所有后代中有h1的div标签
$("li:not(.c1)")// 找到所有不包含c1样式类的li标签

(五)表单筛选器

(1)input标签type参数值筛选

input标签中的type参数的值前加上冒号

$(':checkbox') // 找到所有type参数为checkbox的input标签

(2)表单对象属性

  1. :enabled
  2. disabled
  3. checked
  4. 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

  1. :checked会把input标签中的默认属性和select标签中的selected默认属性一起筛选出来
  2. 解决方法:$('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()  // 索引值等于指定值的元素

三、操作标签

(一)样式操作

  1. addClass:添加指定的css类名
  2. removeClass:移除指定的css类名
  3. hasClass:判断样式存不存在
  4. toggleClass:切换class类名,如果有就移除,没有就添加
$('p').css('color','red')
// DOM操作
// tag.style.color = 'red'

(二)位置操作

  1. offset:获取匹配元素在当前窗口的相对偏移或设置元素位置
  2. position:获取匹配元素相对父元素的偏移
  3. scrollTop:获取匹配元素相对滚动条顶部的偏移,可用于回到顶部功能
  4. scrollLeft:获取匹配元素相对滚动条左侧的偏移

(三)尺寸

  1. height():文本
  2. width()
  3. innerWidth():文本+内边距
  4. innerHeight()
  5. outWidth():文本+内边距+边框
  6. outHeight()

(四)文本操作

  1. html():html内容

  2. text():文本内容

  3. val():值

  4. 获取被选中的checkbox或radio的值

    $("input[name='gender']:checked").val()

html()  // 获取第一个匹配元素的HTML内容
html(val)  // 设置所有匹配元素的html内容

text()// 取得所有匹配元素的内容
text(val)// 设置所有匹配元素的内容

val()// 取得第一个匹配元素的当前值
val(val)// 设置所有匹配元素的值
val([val1, val2])// 设置多选的checkbox、多选select的值

(五)属性操作

  1. 对于标签上有的能看到的属性和自定义属性都用attr
  2. 对于返回布尔值的比如checkbox、radio和option的是否被选中都用prop。

(1)attr

  1. attr(attrName):返回第一个匹配元素的属性值
  2. attr(attrName,attrValue):为所有匹配元素设置值
  3. attr({k1:v1,k2:v2}):为所有配元素设置多个值
  4. removeAttr():从每一个匹配的元素删除一个属性

(2)prop

  1. prop():获取属性
  2. 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

  1. replaceWith()
  2. replaceAll()

(7)clone

  1. clone():只克隆标签,不克隆事件
  2. 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>

五、事件

(一)常用事件

  1. click:点击

  2. hover:鼠标悬浮

    $('p').hover(函数1,函数2)
    // 1. 鼠标悬浮时触发函数1,移开时触发函数2
    // 2. 如果只有一个函数,悬浮和离开时都会触发一次
  3. blur:失去焦点

  4. focus:聚焦

  5. change:域内容发生改变

  6. keyup:按键松开

  7. input:可以实时监听input框内的实时变化

  8. scroll:当用户滚动指定的元素时,会发生 scroll 事件

(二)事件绑定

(1)on

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

  1. events:事件
  2. selector:选择器(可选)
  3. function:事件处理函数

(2)off

.off(events [,selector],function(){})

off() 方法移除用 .on()绑定的事件处理程序。

(三)阻止后续事件执行

  1. return false:常见阻止表单提交等
  2. 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>

(四)事件冒泡

  1. 子标签触发事件后会逐层传递给父标签,称为事件冒泡

  2. 解决办法: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(){
// 你在这里写你的代码
})

六、动画效果

(一)基本

  1. show
  2. hide
  3. toggle

(二)滑动

  1. slideDown
  2. slideUp
  3. slideToggle

(三)淡入淡出

  1. fadeIn
  2. fadeOut
  3. fadeTo
  4. 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()

不通过标签中的自定义属性来存储数据

  1. .data(key,value): 在匹配的元素上存储任意相关数据
  2. .data(key):取值
  3. .removeData(key):移除元素上的数据,不加key表示移除全部数据
$("div").data("k",100);//给所有div标签都保存一个名为k,值为100
$("div").data("k");//返回第一个div标签中保存的"k"的值
$("div").removeData("k");  //移除元素上存放k对应的数据

(day47)jQuery的更多相关文章

  1. jQuery入门(1)jQuery中万能的选择器

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  2. jQuery入门(4)jQuery中的Ajax应用

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  3. jQuery回调、递延对象总结(上篇)—— jQuery.Callbacks

    前言: 作为参数传递给另一个函数执行的函数我们称为回调函数,那么该回调又是否是异步的呢,何谓异步,如:作为事件处理器,或作为参数传递给 (setTimeout,setInterval)这样的异步函数, ...

  4. 代码简洁的滑动门(tab)jquery插件

    < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org ...

  5. 商品描述(动画)--- jQuery

    本文章实现是基于jQuery展示商品描述的一个功能 (1)鼠标移入显示描述内容,鼠标移开内容隐藏.先来看看一个先后效果. (2)jQuery所以的文件可以自行下载,也可以在我主页找到文件,右键文件名复 ...

  6. webform(九)——JQuery基础(选择器、事件、DOM操作)

    JQuery -- 一个js函数包 一.选择器 1.基本选择器 ①id选择器:#       ②class选择器:.       ③标签名选择:标签名 ④并列选择:用,隔开          ⑤后代选 ...

  7. jQuery-1.9.1源码分析系列(二)jQuery选择器

    1.选择器结构 jQuery的选择器根据源码可以分为几块 init: function( selector, context, rootjQuery ) { ... // HANDLE: $(&quo ...

  8. jQuery-1.9.1源码分析系列(二)jQuery选择器续1

    在分析之前说一点题外话. ownerDocument和 documentElement的区别 ownerDocument是Node对象的一个属性,返回的是某个元素的根节点文档对象:即document对 ...

  9. jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选

    前面分析了选择器的结构和几个解析函数,接下来分析jQuery对象的伪类选择器.这里所谓的jQuery对象的伪类选择器就是从已有的jQuery对象(元素集合)中筛选出指定的集合出来. 4.    jQu ...

随机推荐

  1. JAVA学习知识杂烩

    idea快捷键使用:https://blog.csdn.net/youanyyou/article/details/97072410 int值类型与引用类型比较的坑:https://www.cnblo ...

  2. 动手学深度学习14- pytorch Dropout 实现与原理

    方法 从零开始实现 定义模型参数 网络 评估函数 优化方法 定义损失函数 数据提取与训练评估 pytorch简洁实现 小结 针对深度学习中的过拟合问题,通常使用丢弃法(dropout),丢弃法有很多的 ...

  3. HTML连载32-背景颜色、背景图片、背景填充

    一.背景 1.如何设置标签的背景颜色 (1)在CSS中有一个background-color:属性值:,就是专门用来设置标签的背景颜色. (2)取值:具体单词.RGB.RGBA.十六进制 例子: &l ...

  4. Loj #2719. 「NOI2018」冒泡排序

    Loj #2719. 「NOI2018」冒泡排序 题目描述 最近,小 S 对冒泡排序产生了浓厚的兴趣.为了问题简单,小 S 只研究对 *\(1\) 到 \(n\) 的排列*的冒泡排序. 下面是对冒泡排 ...

  5. 快速认识springcloud微服务

    这周浅显的学习了springcloud.简单聊一下微服务.所谓的微服务远远没有我想想的那么高端难以理解,简单说,就是多个服务分布在不同的服务器上,由这些服务互相配合完成某一项任务.那服务和服务之间调用 ...

  6. 送书『构建Apache Kafka流数据应用』和『小灰的算法之旅』和『Java并发编程的艺术』

    读书好处 1.可以使我们增长见识. 2.可提高我们的阅读能力和写作水平. 3.可以使我们变的有修养. 4.可以使我们找到好工作. 5.可以使我们在竞争激烈的社会立于不败之地. 6.最大的好处是可以让你 ...

  7. 我是如何理解并使用maven的

    前言 一直想写一篇关于Maven的文章,但是不知如何下笔,如果说能使用,会使用Maven的话,一.两个小时足矣,不需要搞懂各种概念.那么给大家来分享下我是如何理解并使用maven的. 什么是Maven ...

  8. ng 判定输入的手机号是否正确

    判定输入的手机号是否正确   infoConfirm(){        if (!/^1[3456789]\d{9}$/.test(this.mobile)) {          this.pho ...

  9. python yield: send, close, throw

    send 1. yield可以产出值,可以接收值 2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种 a. gen.send(None) b. next(gen) def ...

  10. 给 VS2017、VS2019 安装 ILSpy 插件

    关于 ILSpy is the open-source .NET assembly browser and decompiler. ILSpy 主页地址:https://github.com/icsh ...