jQuery学习笔记
学习目标
- 能够知道jQuery的作用及优点
jQuery是对JavaScript的封装,它是免费、开源的JavaScript函数库,jQuery 极大地简化了 JavaScript 编程。
jQuery和JavaScript它们的作用一样,都是负责网页行为操作,增加网页和用户的交互效果的,只不过jQuery简化了JavaScript编程,jQuery实现交互效果更简单。
- jQuery兼容了现在主流的浏览器,增加了程序员的开发效率。
- jQuery简化了 JavaScript 编程,代码编写更加简单。
- jQuery是一个免费、开源的JavaScript函数库
- jQuery的作用和JavaScript一样,都是负责网页和用户的交互效果。
- jQuery的优点就是兼容主流浏览器,代码编写更加简单。
学习目标
- 能够知道jQuery的引入方式
- 能够说出两种jQuery入口函数的写法
我们知道使用js获取标签元素,需要页面加载完成以后再获取,我们通过给onload事件属性设置了一个函数来获取标签元素,而jquery提供了ready函数来解决这个问题,保证获取标签元素没有问题,它的速度比原生的 window.onload 更快。
入口函数示例代码:
入口函数的简写示例代码:
- 引入jQuery
- 获取标签元素需要在入口函数来完成,它的速度比原生的 window.onload 更快
- jQuery入口函数有两种写法:
- // 完整写法 $(document).ready(function(){ … }); // 简化写法 $(function(){ … });
学习目标
- 能够使用jQuery选择器获取标签元素
jquery选择器就是快速选择标签元素,获取标签的,选择规则和css样式一样。
- 标签选择器
- 类选择器
- id选择器
- 层级选择器
- 属性选择器
示例代码:
说明:可以使用length属性来判断标签是否选择成功, 如果length大于0表示选择成功,否则选择失败。
- jQuery选择器就是选择标签的
- 标签选择器是根据标签名来选择标签
- 类选择器是根据类名来选择标签
- id选择器是根据id来选择标签
- 层级选择器是根据层级关系来选择标签
- 属性选择器是根据属性名来选择标签
学习目标
- 能够使用选择器进行标签过滤
选择集过滤就是在选择标签的集合里面过滤自己需要的标签
- has(选择器名称)方法,表示选取包含指定选择器的标签
- eq(索引)方法,表示选取指定索引的标签
has方法的示例代码:
eq方法的示例代码:
- 选择集过滤可以使用has方法和eq方法来完成
- jquery给标签设置样式使用css方法
学习目标
- 能够说出2种选择集转移方法
选择集转移就是以选择的标签为参照,然后获取转移后的标签
- $(\’#box\’).prev(); 表示选择id是box元素的上一个的同级元素
- $(\’#box\’).prevAll(); 表示选择id是box元素的上面所有的同级元素
- $(\’#box\’).next(); 表示选择id是box元素的下一个的同级元素
- $(\’#box\’).nextAll(); 表示选择id是box元素的下面所有的同级元素
- $(\’#box\’).parent(); 表示选择id是box元素的父元素
- $(\’#box\’).children(); 表示选择id是box元素的所有子元素
- $(\’#box\’).siblings(); 表示选择id是box元素的其它同级元素
- $(\’#box\’).find(\’.myClass\’); 表示选择id是box元素的class等于myClass的元素
选择集转移的示例代码:
- prev() 表示获取上一个同级元素
- prevAll() 表示获取上面所有同级元素
- next() 表示获取下一个同级元素
- nextAll() 表示获取下面所有同级元素
- parent() 表示获取父元素
- children() 表示获取所有的子元素
- siblings() 表示获取其它同级元素
- find(\”选择器名称\”) 表示获取指定选择器的元素
学习目标
- 能够知道获取和设置元素内容的操作
jquery中的html方法可以获取和设置标签的html内容
示例代码:
说明:
给指定标签追加html内容使用append方法
- 获取和设置元素的内容使用: html方法
- 给指定元素追加html内容使用: append方法
学习目标
- 能够知道获取和设置元素属性的操作
之前使用css方法可以给标签设置样式属性,那么设置标签的其它属性可以使用prop方法了。
示例代码:
说明: 获取value属性和设置value属性还可以通过val方法来完成。
- 获取和设置元素属性的操作可以通过prop方法来完成
- 获取和设置元素的value属性可以通过val方法来完成,更加简单和方便
学习目标
- 能够说出两个常用的jQuery事件
- click() 鼠标单击
- blur() 元素失去焦点
- focus() 元素获得焦点
- mouseover() 鼠标进入(进入子元素也触发)
- mouseout() 鼠标离开(离开子元素也触发)
- ready() DOM加载完成
示例代码:
说明:
- this指的是当前发生事件的对象,但是它是一个原生js对象
- $(this) 指的是当前发生事件的jquery对象
jQuery常用事件:
- click() 鼠标单击
- blur() 元素失去焦点
- focus() 元素获得焦点
- mouseover() 鼠标进入(进入子元素也触发)
- mouseout() 鼠标离开(离开子元素也触发)
- ready() DOM加载完成
学习目标
- 能够知道事件代理的使用方式
事件代理就是利用事件冒泡的原理(事件冒泡就是事件会向它的父级一级一级传递),把事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
事件冒泡代码:
说明:
当点击子元素div,它的点击事件会向它父元素传递,也会触发了父元素的点击事件,这就是事件冒泡。
一般绑定事件的写法:
事件代理的写法
delegate方法参数说明:
delegate(childSelector,event,function)
- childSelector: 子元素的选择器
- event: 事件名称,比如: \’click\’
- function: 当事件触发执行的函数
- 事件代理就是使用父元素来代理子元素的事件,好处是减少事件的绑定次数,提高性能。
- 使用场景当多个相同的子元素绑定同一个事件,可以使用事件代理。
- 事件代理使用是使用delegate方法来完成
学习目标
- 能够知道JavaScript对象有两种创建方式
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等都可以认为是对象,此外,JavaScript 允许自定义对象,对象可以拥有属性和方法。
创建自定义javascript对象有两种方式:
- 通过顶级Object类型来实例化一个对象
- 通过对象字面量创建一个对象
Object类创建对象的示例代码:
对象字面量创建对象的示例代码:
说明:
调用属性和方法的操作都是通过点语法的方式来完成,对象的创建推荐使用字面量方式,因为更加简单。
创建自定义javascript对象有两种方式:
- Object
- 字面量
学习目标
- 能够知道json的格式
json是 JavaScript Object Notation 的首字母缩写,翻译过来就是javascript对象表示法,这里说的json就是类似于javascript对象的字符串,它同时是一种数据格式,目前这种数据格式比较流行,逐渐替换掉了传统的xml数据格式。
json有两种格式:
- 对象格式
- 数组格式
对象格式:
对象格式的json数据,使用一对大括号({}),大括号里面放入key:value形式的键值对,多个键值对使用逗号分隔。
对象格式的json数据:
格式说明:
json中的(key)属性名称和字符串值需要用双引号引起来,用单引号或者不用引号会导致读取数据错误。
数组格式:
数组格式的json数据,使用一对中括号([]),中括号里面的数据使用逗号分隔。
数组格式的json数据:
实际开发的json格式比较复杂,例如:
json本质上是字符串,如果在js中操作json数据,可以将json字符串转化为JavaScript对象。
示例代码:
- json就是一个javascript对象表示法,json本质上是一个字符串。
- json有两种格式:1. 对象格式, 2. 数组格式
学习目标
- 能够知道ajax的作用
ajax 是 Asynchronous JavaScript and XML的简写,ajax一个前后台配合的技术,它可以让 javascript 发送异步的 http 请求,与后台通信进行数据的获取,ajax 最大的优点是实现局部刷新,ajax可以发送http请求,当获取到后台数据的时候更新页面显示数据实现局部刷新,在这里大家只需要记住,当前端页面想和后台服务器进行数据交互就可以使用ajax了。
这里提示一下大家, 在html页面使用ajax需要在web服务器环境下运行, 一般向自己的web服务器发送ajax请求。
jquery将它封装成了一个方法$.ajax(),我们可以直接用这个方法来执行ajax请求。
示例代码:
ajax方法的参数说明:
- url 请求地址
- type 请求方式,默认是\’GET\’,常用的还有\’POST\’
- dataType 设置返回的数据格式,常用的是\’json\’格式
- data 设置发送给服务器的数据,没有参数不需要设置
- success 设置请求成功后的回调函数
- error 设置请求失败后的回调函数
- async 设置是否异步,默认值是\’true\’,表示异步,一般不用写
- 同步和异步说明同步是一个ajax请求完成另外一个才可以请求,需要等待上一个ajax请求完成,好比线程同步。异步是多个ajax同时请求,不需要等待其它ajax请求完成, 好比线程异步。
ajax的简写方式:
$.ajax按照请求方式可以简写成$.get或者$.post方式
ajax简写方式的示例代码:
$.get和$.post方法的参数说明:
$.get(url,data,success(data, status, xhr),dataType).error(func)$.post(url,data,success(data, status, xhr),dataType).error(func)
- url 请求地址
- data 设置发送给服务器的数据,没有参数不需要设置
- success 设置请求成功后的回调函数data 请求的结果数据status 请求的状态信息, 比如: \”success\”xhr 底层发送http请求XMLHttpRequest对象
- dataType 设置返回的数据格式\”xml\”\”html\”\”text\”\”json\”
- error 表示错误异常处理func 错误异常回调函数
- ajax 是发送http请求获取后台服务器数据的技术
- ajax的简写方式可以使用$.get和$.post方法来完成
jQuery 简介
本教程我们来学习 JQuery 的基础入门知识。JQuery 是一个快速、简洁的 JavaScript 框架,是继 Prototype 之后又一个优秀的 JavaScript 代码库。jQuery 极大的简化了 JavaScript 编程,例如以前要一大段 JavaScript 代码才能实现的功能,使用 jQuery 很轻松就能完成。
- 轻量级,jQuery 的体积较小,压缩之后,大约只有 100KB。
- 强大的选择器,jQuery 支持几乎所有的 CSS 选择器,以及 jQuery 自定义的特有选择器。
- 出色的 DOM 封装,jQuery 封装了大量常用的 DOM 操作,使开发者在编写 DOM 操作相关程序的时候能够更加得心应手。
- 浏览器兼容性,jQuery 消除了浏览器兼容问题。
- 可靠的事件处理机制,jQuery 的事件处理机制吸收了 JavaScript 中的事件处理函数的精华,使得 jQuery 在处理事件绑定时非常可靠。
- 提供了丰富多彩的页面动态效果。
- 与 Ajax 技术的完美结合,极大地方便了程序的开发,增强了页面交互, 提升了用户体验。
- 有丰富的插件支持,目前已经有成百上千的官方插件支持,而且不断有新插件面世。
- HTML 元素选取
- HTML/DOM 操作
- CSS 操作
- JavaScript 效果和动画
- HTML DOM 遍历和修改
- AJAX
- Utilities
除此之外,jQuery 还提供了一些插件供我们使用,对于代码的实现方便且快捷。
- 原生 JavaScript 的 API 名字太长,不容易记住,jQuery 的 API 名字容易记住。
- 原生 JavaScript 有的代码冗余,jQuery 的代码简洁。
- 原生 JavaScript 中的属性或者方法有些浏览器无法兼容,jQuery 帮我们解决了浏览器兼容问题。
- 原生 JavaScript 容错率比较低,前面的代码出现问题,后面的代码执行不到。jQuery 容错率比较高,前面的代码出现问题,不影响后面的代码。
- 原生 JavaScript 不能添加多个入口函数,如果添加了多个,后面的会把前面的覆盖掉。jQuery 可以写多个入口函数。
jQuery 已“死”?为清除技术债,我们删掉了前端所有 jQuery 依赖
近期,英国公共部门站 GOV.UK 前端开发主管 Matt Hobbs 宣布该公司删除了 jQuery 作为所有前端应用程序的依赖项,这意味着“在所有 13 个 FE 应用程序中,JS 大小减少了 32 KB(31% ~49% 之间)”。
Matt 也在推特上分享了几组数据,说明了在删除 jQuery 后一些关键指标得到了优化。
- 移除页面标签限制并查看所有页面 RUM 数据, 75% 用户的页面都有类似的下降:
- 在 75% 的页面中仅检查 Android 用户,可以看到 JS 长任务改进了 7%:
- 50% 用户的移动设备上的 JS Long Tasks 有 10% 的改进:
- 而对于 95% 用户,阻塞时间则减少了 10% :
“这些用户会遇到严重不利的网络和设备条件,每一次性能提升对他们来说尤其重要。”Matt 说道。
根据 Matt 说法,删除 jQuery 的本意是清理技术债。“它最初是为了支持浏览器而存在的,但随着时间的推移,情况发生了变化,所以 bits 可以被删除。我想在这之后会重新评估,看看还有什么是不再需要的。” Matt 表示。
jQuery 是一套跨浏览器的 JavaScript 库,可以简化 HTML 与 JavaScript 之间的操作。截至 2021 年,有将近 84% 的移动页面使用 jQuery。jQuery 是最受欢迎的 JavaScript 库之一,它的一些操作已经反映在标准 Web API 中。
JQuery 创建于 2006 年,主要是为了帮助开发者处理当时浏览器的不足。当时谷歌浏览器还未流行,人们饱受 Internet Explorer 之苦。而 JQuery 开发者可以使用 CSS 选择器和函数可以轻松地遍历和操作 DOM,
此外,JQuery 还提供了一些开箱即用的函数来做动画 DOM 元素,而无需弄乱 CSS。在没有 jQuery 之前发出 AJAX 请求很麻烦,但使用 JQuery 只需几行代码即可完成。JQuery 提供了一个可以在大多数浏览器上工作的 API,这在当时使用 JavaScript 是很难实现的。
但在过去的几年里,JavaScript 已经成熟了很多,它支持很多新的 API,其社区也构建了很多库来填补 jQuery 可能留下的任何空白。
现在,开发者几乎可以在原生 JavaScript 中做任何 jQuery 可以做的事情。例如,可以使用带有 querySelector 和 querySelectorAll 的 CSS 选择器语法来选择元素,使用 classList API 在元素上添加、删除和切换类,使用 addEventListener 将事件处理程序附加到 DOM 元素和窗口等等。
同时随着 Angular、Vue 和 React 等框架的出现和流行,一直未有特别创新的 jQuery 更显“老态”。“对我来说,他们 (jQuery ) 就像是那个随着时代变迁没有更新知识的老灰胡子。”有网友直言。
“现在,大多数事情都不再需要 jQuery 了。”有网友评论道,“我个人发现普通的 JS API 和 fetch 甚至比 jQuery 的东西更干净。人们仍然出于习惯使用 jQuery,是因为摆脱它需要做很多工作。”
近几年,业内对于“jQuery 是否已死”的讨论一直没停过。实际上,一些大型、资金充足的网站已经“用脚投票”,正在逐渐摆脱对 jQuery 的依赖。
2018 年,GitHub 宣布从 GitHub.com 的前端代码中完全移除了 jQuery。“早期,jQuery 对我们意义重大。”GitHub 前端工程团队在方式发布的文章里表示。“在 GitHub 的早期阶段,jQuery 让小型的开发团队能够快速进行原型设计并开发出新功能,而无需专门针对每个 Web 浏览器调整代码。”
但随着 GitHub 成长为一家拥有数百名工程师的公司,jQuery 带来的价值已经随着时间的推移而下降。比如技术债会随着依赖项的增多而增长,给企业带来很大的维护成本。因此,GitHub 最终决定删除 jQuery。不过,GitHub 没有选择另外的库或框架,而是使用标准的浏览器 API 来实现。
不只 GitHub,Bootstrap 最新版本也将删除 jQuery。
尽管被认为已经过时,但 jQuery 仍然是占主导地位的 JavaScript 库。今天的开发人员可能没有意识到在使用 jQuery,因为它被嵌入在了许多大型开源项目里面,其中最著名的就是 WordPress。
“大多数网站都不需要复杂的开发框架,它们大多是具有一些动态行为的静态网站,这种网站通常用 WordPress 编写。jQuery 在这个场景下仍然很流行,因为它既简单又有效,人们觉得没必要停止使用它。”jQuery 开发者 Micha Gobiowski-Owczarek 在接受外媒采访时说道。
Micha Gobiowski-Owczarek 也明确表示,为了不与浏览器冲突,jQuery 不会修改原生原型,而是用 jQuery 包装器对象包装 DOM 节点,每个操作都会创建一个新的包装器对象。大多数情况下,这并不重要,但对于具有大量 DOM 操作的、非常复杂的应用程序来说,可能会成为一个问题。
未来的很长一段时间里,jQuery 还继续会是 WordPress 的一部分,因为它很难在不破坏向后兼容性的情况下将它删除。但一些改变已经发生,如 WordPress 创建的 Gutenberg 编辑器不依赖于 jQuery。
随着时间的推移, WordPress 肯定会逐步更新技术,这是一个渐进的过程,jQuery 的最终去留也很难说。但不可否认的是,jQuery 为前端带来了重大的影响。
参考链接:
https://thenewstack.io/why-outdated-jquery-is-still-the-dominant-javascript-library/
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。