一、初识jQuery
jQuery是JavaScript世界中使用最广泛的一个库。鉴于它如此流行,又如此好用,所以每一个入门JavaScript的前端工程师都应该了解和学习它。
jQuery是一个优秀的JS函数库。
(对BOM和DOM的封装)
jQuery这么流行,肯定是因为它解决了一些很重要的问题。实际上,jQuery能帮我们干这些事情:
-
消除浏览器差异:你不需要自己写冗长的代码来针对不同的浏览器来绑定事件,编写AJAX等代码;
-
简洁的操作DOM的方法:写
$('#test')
肯定比document.getElementById('test')
来得简洁; -
轻松实现动画、修改CSS等各种操作。
jQuery的理念“Write Less, Do More“,让你写更少的代码,完成更多的工作!
JS原生,对BOM和DOM的操作比较繁琐,JS中对标签的操作基本上为:增删改查,其中查询最为核心。jQuery则是对JS中标签的查询比较方便。所以,选择器是jQuery的核心!!!
1-1、jQuery的功能
- HTML元素选取(选择器)
- HTML元素操作
- CSS操作
- HTML事件处理
- JS动画效果
- 链式效果
- 读写合一
- 浏览器兼容
- 易扩展插件
- ajax分装
- ......
1-2、jQuery的版本
二、jQuery的使用
2-1、方法一:本地引入
1、从jQuery官网可以下载对应版本到本地。
https://jquery.com/download/
jQuery只是一个jquery-xxx.js
文件,但你会看到有compressed(已压缩)和uncompressed(未压缩)两种版本,使用时完全一样,但如果你想深入研究jQuery源码,那就用uncompressed版本。
2、将下载的jquery-xxx.js
文件保存到项目对应的文件夹中;
3、使用jQuery只需要在页面的<head>
引入jQuery文件即可;
2-2、方法二:远程引入CDN
如果您不希望下载并存放 jQuery,那么也可以通过 CDN(内容分发网络) 引用它。
它是由一组分布在不同地理位置的服务器组成的网络,这些服务器被放置在全球范围内的数据中心之间,以提供高速、高可用性的内容分发服务。
CDN的核心功能主要包括缓存和回源。
它将源站的资源缓存到分布在全国各地的CDN节点,用户请求数据时,先访问距离用户最近的CDN节点上缓存的资源,如果没有取到缓存,才会去访问源站。
这种机制避免了高峰期网络拥塞,为源站分担了压力,同时也缩短了用户等待时长。
CDN在前端开发中的主要作用包括:
- 加速网页加载:CDN可以将静态资源如图片、样式表、脚本文件等缓存到离用户更近的位置,大大减少了用户请求的响应时间,提升了网页的加载速度。
- 节省带宽消耗:通过在CDN节点服务器上缓存资源,可以减少用户请求对原始服务器的负载,从而节约带宽消耗。
- 提高网站可用性:CDN的分布式架构能够提高网站的可靠性和可用性,即使部分节点服务器出现故障,其他节点服务器也可以继续提供内容分发服务。
CDN是一种用存储空间换取时间的技术。
1、从jquery官网获取
谷歌和微软的服务器都存有 jQuery 。
提示:使用谷歌或微软的 jQuery,有一个很大的优势:
许多用户在访问其他站点时,已经从谷歌或微软加载过 jQuery。所有结果是,当他们访问您的站点时,会从缓存中加载 jQuery,这样可以减少加载时间。
同时,大多数 CDN 都可以确保当用户向其请求文件时,会从离用户最近的服务器上返回响应,这样也可以提高加载速度。
2、常用的CDN资源库
如:BootCND
BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务
使用远程引入CDN的方式,引入jQuery库的时候,测试的时候要保证有网!
三、jQuery核心函数:$符号
$
是著名的jQuery符号。
实际上,jQuery把所有功能全部封装在一个全局变量jQuery
中,而$
也是一个合法的变量名,它是变量jQuery
的别名:
window.jQuery; // jQuery(selector, context)
window.$; // jQuery(selector, context)
$ === jQuery; // true
typeof($); // 'function'
$
本质上就是一个函数,但是函数也是对象,于是$
除了可以直接调用外,也可以有很多其他属性。
注意,你看到的
$
函数名可能不是jQuery(selector, context)
,因为很多JavaScript压缩工具可以对函数名和参数改名,所以压缩过的jQuery源码$
函数可能变成a(b, c)
。
绝大多数时候,我们都直接用$
(因为写起来更简单嘛)。
但是,如果$
这个变量不幸地被占用了,而且还不能改,那我们就只能让jQuery
把$
变量交出来,jQuery 使用名为 noConflict() 的方法来解决该问题,然后就只能使用jQuery
这个变量:
$; // jQuery(selector, context)
jQuery.noConflict();
$; // undefined
jQuery; // jQuery(selector, context)
jQuery(document).ready(function(){
jQuery("button").click(function(){
jQuery("p").text("jQuery 仍在运行!");
});
});
这种黑魔法的原理是jQuery在占用$
之前,先在内部保存了原来的$,
调用jQuery.noConflict()
时会把原来保存的变量还原。
// 帮助您使用自己的名称(比如 jq)来代替 $ 符号。
var jq=jQuery.noConflict();
jq(document).ready(function(){
jq("button").click(function(){
jq("p").text("jQuery 仍在运行!");
});
});
如果你的 jQuery 代码块使用 $ 简写,并且您不愿意改变这个快捷方式,那么您可以把 $ 符号作为变量传递给 ready 方法。
这样就可以在函数内使用 $ 符号了 - 而在函数外,依旧不得不使用 "jQuery":
$.noConflict();
jQuery(document).ready(function($){
$("button").click(function(){
$("p").text("jQuery 仍在运行!");
});
});
四、jQuery核心对象
执行$()返回的对象
$(function (){
var $btn1 = $('#btn1');// 获取的是jquery对象!
$btn1.click(function (){
// btn1绑定点击监听
});
})
jQuery对象命名建议用$开头。