Jquery
你可能听说过jQuery,它名字起得很土,但却是JavaScript世界中使用最广泛的一个库。
江湖传言,全世界大约有80~90%的网站直接或间接地使用了jQuery。鉴于它如此流行,又如此好用,所以每一个入门JavaScript的前端工程师都应该了解和学习它。
jQuery这么流行,肯定是因为它解决了一些很重要的问题。实际上,jQuery能帮我们干这些事情:
-
消除浏览器差异:你不需要自己写冗长的代码来针对不同的浏览器来绑定事件,编写AJAX等代码;
-
简洁的操作DOM的方法:写
$('#test')
肯定比document.getElementById('test')
来得简洁; -
轻松实现动画、修改CSS等各种操作。
jQuery的理念“Write Less, Do More“,让你写更少的代码,完成更多的工作!
jQuery版本
目前jQuery有1.x和2.x两个主要版本,3.x的版本也出来了,区别在于2.x移除了对古老的IE 6、7、8的支持,因此2.x的代码更精简。选择哪个版本主要取决于你是否想支持IE 6~8。
从jQuery官网可以下载最新版本。jQuery只是一个jquery-xxx.js
文件,但你会看到有compressed(已压缩)和uncompressed(未压缩)两种版本,使用时完全一样,但如果你想深入研究jQuery源码,那就用uncompressed版本。
使用jQuery
使用jQuery只需要在页面的<head>
引入jQuery文件即可:
https://code.jquery.com/jquery-3.2.1.min.js
下载该文件,放入指定位置:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>ajax</title> <script src="/static/js/jquery-3.2.1.min.js"></script> </head> <body> <script> 'use strict'; console.log("jQuery版本: " + $.fn.jquery); </script> </body> </html>
结果:
我搞了一个3.x的版本,笔者并非是专业的前端开发人员,这里也就不介绍1.x,2.x,3.x的区别了,可自行去网上搜索。
关于Jquery是否还值得去学习这个问题,我想还是有必要的,存在即合理。
jQuery 库 - 特性
jQuery 是一个 JavaScript 函数库。
jQuery 库包含以下特性:
- HTML 元素选取
- HTML 元素操作
- CSS 操作
- HTML 事件函数
- JavaScript 特效和动画
- HTML DOM 遍历和修改
- AJAX
- Utilities
jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数。
可以通过下面的标记把 jQuery 添加到网页中:
<head> <meta charset="utf-8" /> <title>ajax</title> <script src="/static/js/jquery-3.2.1.min.js"></script> </head>
$符号
$是著名的jQuery符号。实际上,jQuery把所有的功能全部封装在一个全局变量jQuery中,而$也是一个合法的变量名,他是变量jQuery的别名:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>jQuery</title> <script src="/static/js/jquery-3.2.1.min.js"></script> </head> <body> <script> 'use strict'; console.log(window.jQuery);//jQuery(selector, context) console.log(window.$);// jQuery(selector, context) console.log($ === jQuery);//true console.log(typeof($));'function' </script> </body> </html>
结果:
$
本质上就是一个函数,但是函数也是对象,于是$
除了可以直接调用外,也可以有很多其他属性。
注意,你看到的$
函数名可能不是jQuery(selector, context)
,因为很多JavaScript压缩工具可以对函数名和参数改名,所以压缩过的jQuery源码$
函数可能变成a(b, c)
。
绝大多数时候,我们都直接用$
(因为写起来更简单嘛)。但是,如果$
这个变量不幸地被占用了,而且还不能改,那我们就只能让jQuery
把$
变量交出来,然后就只能使用jQuery
这个变量:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>jQuery</title>
<script src="/static/js/jquery-3.2.1.min.js"></script>
</head>
<body>
<script>
'use strict';
console.log($);
console.log(jQuery.noConflict());
console.log($);
console.log(jQuery);
</script>
</body>
</html>
结果:
这种黑魔法的原理是jQuery在占用$
之前,先在内部保存了原来的$
,调用jQuery.noConflict()
时会把原来保存的变量还原。