【jQuery】jQuery知识点梳理(持续更新)
jQuery是什么:
由图标可知:
j:JavaScript
query:查询
所以可以分析得jQuery是一个JavaScript库,而且主要用来查询。
注意,下面的一行小字,write less do more 我们不仅可以看出jQuery以高效作为自己的目标,而且可以看出jQuery的野心不止查询。它可以使得我们对html文档遍历操作、事件处理、动画以及ajax变得更加简单
关于版本介绍:
首先我我们登陆jQuery的官网可以看到,有1.X 2.X 3.X,我们如何选择呢?此时不如去看看大公司开发用的都是什么版本的,接下来我们来看看京东的前端源代码,如下图:
可以看到,京东使用的是1.X版本,接下来我们看一下百度的前端代码:
可以看到百度使用的jQuery也是1.X版本
分析:为什么很多大公司的前端页面使用的都是1.x版本呢?
可能是考虑到了兼容的问题,因为自2.x开始,jQuery便开始不支持IE6、7、8了,但是1.x还是支持的,使用1.x可能便是为了照顾那些ie的钉子户把。
如何使用jQuery:
1、下载jQuery库:
这里需要说明一下,jQuery官网了有可能出现打不开的情况,这里提供官网和之前转发的一篇下载博客的网址,点开链接直接Ctrl + s保存即可。
官网下载 :http://code.jquery.com/
下载博客:https://blog.csdn.net/tyrant_forever/article/details/107333046
注意:下载时有压缩版(名称中有min)和未压缩版, 一半在开发过程中使用的是未压缩版,因为有缩进且命名规范,方便阅读。而上线后使用的是压缩版,因为压缩版会删除一些空格,简化命名从而达到提升网页响应速度的目的。
2、引入jQuery库:
代码实现:
<script src="js/jquery-1.6.4.js"></script>
3、编写jQuery代码
第一个jQueryhelloworld:
代码实现:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>02-jQuery-HelloWorld</title><script src="js/jquery-1.6.4.js"></script>//jQuery固定格式<script>$(document).ready(function () {alert("hello jquery");})</script>
</head>
<body></body>
</html>
注:
jQuery只有按上述代码所示的固定格式来写,将来在function中才能拿到页面中所有的元素
入口函数:
原生js和jQuery入口函数的区别:
1、由于原生js和jQuery入口函数的加载模式不同,原生js会等到dom元素加载完毕,并且图片也加载完毕才会执行。jQuery会等到dom元素加载完毕,但不会等到图片也加载完毕就会执行。
2、原生js如果编写了多个入口函数,后面编写的会覆盖前面编写的,jQuery中编写多个入口函数,后面的不会覆盖前面的
jQuery入口函数的其他写法:
代码实现:
<script>//1、第一种写法$(document).ready(function () {alert("method1");})//2、第二种写法jQuery(document).ready(function () {alert("method2");})//3、第三种写法$(function () {alert("method3");})//4、第四种写法jQuery(document)() {alert("method4");})</script>
推荐使用第三种,因为写得少。
jQuery冲突问题:
发生原因:
jQuery使用了$来简化我们的代码,但是其他js框架作者也可以使用$来简化代码,这就使得冲突产生。而且如果发生了冲突,后引入的就会覆盖前引入的。
解决方法:
在开头(至少是jQuery代码之前)加入如下一行代码
jQuery.noConflict();
表明jQuery放弃的对$的使用权,所以需要将jQuery中的$换成jQuery,但是如果你释放之后还想简单的使用,可以自定义一个访问符
代码实现:
<script>var sl = jQuery.noConflict();sl(function () {alert("test");});</script>
核心函数:
什么是核心函数:
<script>$();</script>
$()就代表调用jQuery的核心函数
核心函数可以接受的参数:
1、接受一个函数(如入口函数)
2、接受一个字符串
2.1 接受一个字符串选择器(会被包装成一个jQuery对象传给我们)
2.2 接受一个代码片段(会被包装成一个jQuery对象传给我们)
3、接受一个dom元素 (会被包装成一个jQuery对象传给我们)
代码实现:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>06-jQuery核心函数</title><script src="js/jquery-1.6.4.js"></script><script>//1、接受一个函数$(function () {alert("hello world!");//2、接受一个字符串//2.1、接受一个字符串选择器var $box1 = $(".box1");var $box2 = $("#box2");console.log($box1);console.log($box2);//2.2、接受一个字符串代码片段var $p = $("<p>我是p标签</p>");$box1.append($p);//3、接受一个dom元素var span = document.getElementsByTagName("span")[0];console.log(span);var $span = $(span);console.log($span);});</script>
</head>
<body>
<div class="box1"></div>
<div id="box2"></div>
<span>我是span标签</span>
</body>
</html>
jQuery对象:
什么是jQuery对象:
jQuery对象是一个伪数组
什么是伪数组:
有0到length-1个属性,并且有length属性
静态方法:
回顾:
静态方法:
直接添加到类上面,通过类名调用
实例方法:
添加到类的原型上,通过实例调用
代码实现:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>08-静态方法和实例方法</title><script src="js/jquery-1.6.4.js"></script><script>//定义一个类function AClass() {}//添加一个静态方法AClass.staticMethod = function () {alert("staticMethod");}//调用静态方法AClass.staticMethod();//添加一个实例方法AClass.prototype.instanceMethod = function () {alert("instanceMethod");}//创建一个实例var class1 = new AClass();//调用实例函数class1.instanceMethod();</script>
</head>
<body></body>
</html>
常用静态方法:
1、each
each方法可以遍历数组和伪数组,至于什么是伪数组,前文已经说过了,这里不再赘述。
代码实现:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>09-静态方法each</title><script src="js/jquery-1.6.4.js"></script><script>//数组var array1 = [1, 3, 5, 7, 9];//伪数组var object1 = {0:1, 1:3, 2:5, 3:7, 4:9, length:5};$.each(array1,function (index, value) {console.log(index, value);});$.each(object1,function (index,value) {console.log(index, value);})</script>
</head>
<body></body>
</html>
2、map
map于each一样可以遍历数组和伪数组
代码实现:
<script>//数组var array1 = [1, 3, 5, 7, 9];//伪数组var object1 = {0:1, 1:3, 2:5, 3:7, 4:9, length:5};$.map(array1,function (value,index) {console.log(index, value);})$.map(object1,function (value,index) {console.log(index, value);})</script>
问题来了,each和map有什么区别?
我们来看如下代码:
<script>//数组var array1 = [1, 3, 5, 7, 9];//伪数组var object1 = {0:1, 1:3, 2:5, 3:7, 4:9, length:5};// $.map(array1,function (value,index) {// console.log(index, value);// })var res1 = $.map(object1,function (value,index) {console.log(index, value);});var res2 = $.each(object1,function (index,value) {console.log(index, value);});var res3 = $.map(object1,function (value,index) {console.log(index, value);return index + value;});var res4 = $.each(object1,function (index,value) {console.log(index, value);return index + value;});console.log(res1);console.log(res2);console.log(res3);console.log(res4);</script>
运行结果:
得出结论:
(1)each遍历谁默认返回值就是谁,map的默认返回值是一个空数组。
(2)each不支持在回调函数中对遍历的数组进行处理,map可以在回调函数中通过return对遍历的数组进行处理,然后生成一个新的数组返回。
3、trim
作用:去除字符串两端空格
使用方法;
<script>var str = " test ";str = $.trim(str);console.log("====" + str + "====");</script>
注:如果直接调用trim方法的话不会有影响,需要使用的一个变量接受trim函数的返回值
4、isWindow
作用:判断是否为window
代码实现:
<script>var array1 = [1, 3, 5, 7, 9];var win = window;var res1 = $.isWindow(array1);var res2 = $.isWindow(win);console.log(res1);console.log(res2);</script>
运行结果:
5、isArray
作用:判断是否为真数组
代码实现:
<script>var array1 = [1, 3, 5, 7, 9];var win = window;var res1 = $.isArray(array1);var res2 = $.isArray(win);console.log(res1);console.log(res2);</script>
运行结果;
6、isFunction
作用:判断是否为function
<script>var array1 = [1, 3, 5, 7, 9];var fun = function () {};var res1 = $.isFunction(array1);var res2 = $.isFunction(fun);console.log(res1);console.log(res2);</script>
运行结果:
注意:jQuery本身就是一个函数
7、holdReady
作用:暂停和恢复ready事件,企业开发中可能出现一种情况是你希望一些事件执行完毕后在执行入口函数,此时可以使用到此函数。
代码实现:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>12-静态方法holdReady</title><script src="js/jquery-1.6.4.js"></script><script>$.holdReady(true);$(document).ready(function () {alert("ready");})</script>
</head>
<body>
<button>恢复ready事件</button>
<script>var btn = document.getElementsByTagName("button")[0];btn.onclick = function () {$.holdReady(false);}
</script>
</body>
</html>
分析:
上述代码在一开始暂停了ready事件,并使用了原生的js为按钮添加了一个事件,当点击按钮时恢复ready事件。
常用选择器:
注:这里说的选择器不包括像类选择器、ID选择器等属于css选择器范畴的选择器,因此主要讲解内容选择器。
1、empty
作用:找到既没有文本内容也没有子元素的指定元素。
2、parent
作用:找到有文本内容或有子元素的指定元素。
3、contains
作用:找到包含制定文本内容的指定元素,注意是包含不是等于。
4、has
作用:找到包含指定子元素的指定元素。
属性和属性节点:
什么是属性:
对象身上保存的变量
如何操作属性:
<script>$(function () {function Person(){}var per = new Person();//修改属性方法一per.name = "rend";console.log(per.name);console.log("---------------");//修改属性方法二per["age"] = "20";console.log(per["age"]);});</script>
什么是属性节点:
在编写html代码时,在html标签中添加的属性就是属性节点
如何操作属性节点:
代码实现:
//设置属性节点的值的方法var span1 = document.getElementsByTagName("span")[0];span1.setAttribute("name","tyratForever");//获取属性节点的值的方法console.log(span1.getAttribute("name"));
属性和属性节点有什么区别:
任何对象都有属性,只有dom对象才有属性节点
jQuery操作属性和属性节点的方法:
操作属性节点的方法:
1、attr:
作用:获取或者设置属性节点的值。
注意:
(1)可以传递一个参数,也可传递两个参数,如果传递一个参数,代表获取一个属性节点的值,如果传递两个参数,代表设置属性节点的值。
(2)如果是获取,无论找到多少个元素,都会只返回第一个元素的制定节点的值。
(3)如果是设置,找到多少个元素就会设置多少个元素。
(4)如果是设置,如果设置的属性节点不存在,系统会自动新增。
代码实现:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>16-jQuery的attr方法</title><script src="js/jquery-1.12.4.js"></script><script>$(function () {//获取属性节点的值console.log($("span").attr("class"));//设置属性节点的值$("span").attr("class", "box");})</script>
</head>
<body>
<span class="span1" name="rend"></span>
<span class="span2" name="tyrantForever"></span>
</body>
</html>
2、removeAttr:
作用:删除属性节点
注意:
(1)会删除所有找到元素指定的属性节点
(2)jQuery1.6.4不支持该方法
代码实现(借用上面的框架):
//删除属性节点$("span").removeAttr("class name");
操作属性的方法:
1、prop
特点和attr一致
2、removeProp
特点和removeProp一致
注:因为原理大差不差的,这里就不在赘述了,想要查看节点的话可以看看这篇博客:
https://blog.csdn.net/tyrant_forever/article/details/107400872
代码实现;
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>17-jQuery的prop方法</title><script src="js/jquery-1.12.4.js"></script><script>$(function () {//设置属性的值$("span").eq(0).prop("demo", "rend");$("span").eq(1).prop("demo", "tyratForever");//获取属性的值console.log($("span").prop("demo"));//删除节点$("span").removeProp("demo");})</script>
</head>
<body>
<span class="span1" name="rend"></span>
<span class="span2" name="tyrantForever"></span>
</body>
</html>
重点:prop可以操作属性节点
那么问题来了,开发过程中使用什么操作属性节点?
官方推荐:
具有true和false的属性节点如checked selected 或者disableed使用prop(),其他使用attr
类相关操作方法:
1、addClass
作用:添加类 如果要添加多个,多个类名之间用空格隔开
2、removeClass
作用:删除类 如果需要删除多个,多个类名之间用空格隔开
3、toggleClass
作用:切换类(有的话删除,没有的话添加)
代码实现;
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>19-jQuery操作类相关的方法</title><style>*{margin: 0;padding: 0;}.class1{width: 100px;height: 100px;background: red;}.class2{border: 10px solid #000;}</style><script src="js/jquery-1.12.4.js"></script><script>$(function () {var btn = document.getElementsByTagName("button");btn[0].onclick = function () {$("div").addClass("class1 class2");}btn[1].onclick = function () {$("div").removeClass("class1 class2");}btn[2].onclick = function () {$("div").toggleClass("class1 class2");}})</script>
</head>
<body>
<button>添加类</button>
<button>删除类</button>
<button>切换类</button>
<div></div>
</body>
</html>
HTML代码/文本/值 相关操作方法:
1、html([val|fn])
2、text([val|fn])
3、val([val|fn|arr])
这里真没什么好说的了,和js里面一模一样
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>20-jQuery文本值相关的方法</title><script src="js/jquery-1.12.4.js"></script><script>$(function () {var btns = document.getElementsByTagName("button");btns[0].onclick = function () {$("div").html("<p>我是段落<span>我是span</span></p>");}btns[1].onclick = function () {console.log($("div").html());}btns[2].onclick = function () {$("div").text("<p>我是段落<span>我是span</span></p>");}btns[3].onclick = function () {console.log($("div").text());}btns[4].onclick = function () {$("input").val("请输入内容");}btns[5].onclick = function () {console.log($("input").val());}})</script><style>*{margin: 0;padding: 0;}div{width: 100px;height: 100px;border: 1px solid #000;}</style>
</head>
<body>
<button>设置html</button>
<button>获取html</button>
<button>设置text</button>
<button>获取text</button>
<button>设置value</button>
<button>获取value</button>
<div></div>
<input type="text">
</body>
</html>
操作CSS样式的方法:
1、逐个设置
2、链式编程
3、批量编程
4、获取元素css属性值
不必多言,一切尽在代码中
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>21-jQuery操作css样式的方法</title><script src="js/jquery-1.12.4.js"></script><script>$(function () {//1、逐个设置$("div").css("width","100px");$("div").css("height", "100px");$("div").css("background","red");//2、链式编程$("div").css("width","100px").css("height", "100px").css("background","blue");//3、批量编程$("div").css({width:"100px",height:"100px",background:"yellow"});//获取元素的属性值console.log($("div").css("background"));});</script>
</head>
<body>
<div></div>
</body>
</html>
相关文章:

Python - 在CentOS7.5系统中安装Python3
注意:以下内容均使用root用户执行操作。 1-确认信息 # uname -a Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux # # cat /etc/system-release CentOS Linux release 7.5.1804 (Core) # …

JQuery 基础:8.节点操作
1.replaceWith替换节点 $("br").replaceWith("<hr/>"); 2.wrap()包裹节点,将元素逐个用指定标签包裹 $("b").wrap("<font colorred></font>")转载于:https://www.cnblogs.com/xyangs/archive/2012/05/22/2513821.ht…

《CLR Via C# 第3版》笔记之(十四) - 泛型高级
为了更好的利用泛型,现将泛型的一些高级特性总结一下。 主要内容: 泛型的协变和逆变泛型的参数的约束1. 泛型的协变和逆变 对于泛型参数(一般用T表示),指定了类型之后。就只能识别此类型,面向对象中的继承并不适用泛型参数&#x…

剑指offer-反转链表
输入一个链表,反转链表后,输出链表的所有元素。 #-*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val x # self.next None class Solution:# 返回ListNodedef ReverseList(self, pHead):# write code h…

[NOIP模拟测试9]题(Problem) 题解 (组合数全家桶+dp)
达哥送分给我我都不要,感觉自己挺牛批。 $type0:$ 跟visit那题类似,枚举横向移动的步数直接推公式: $ans\sum C_n^i \times C_i^{\frac{i}{2}} \times C_{n-i}^{\frac{n-i}{2}},i\% 20$ $type1:$ 因为不能触碰负半轴,所以可以把右…

如何获取元素最终使用的css值
这个问题是在组件css加载方案中碰到的 场景: 元素的样式我们可以写在style里面,也可以写到外链css里面,如果没有设置,也会读取浏览器默认的css的,现在我们要计算getComputedstyle某个元素的最终所使用的css样式 区别&a…

【工具软件】webstorm如何使用快捷键生成固定代码
我们写前端页面时会有很多的机械重复代码,每写一个文件都要重新写一遍,枯燥且浪费时间,有没有一个方法可以快速生成这些代码呢?有!webstorm替我们考虑到了这个问题,提供了解决方案,接下来让我们…

Citrix Receiver For Linux 预览版
Citrix各平台的客户端插件都在不断的完善和进行版本升级,但是For linux版本的ICA Client基本是一成不变,很长时间都不会有什么动静,但是Citrix产品都是搭配ThinClient来使用,而好多ThinClient都会使用Linux系统,而在Li…

5.20 单词小记
1.cart n. 二轮运货马车 vt. 用车装载 vi. 驾运货马车;用运货车运送 网络释义:购物车,小车,球车,分类与回归树 例:This would allow the server application to identify the cart from which it should add and removeitems. 这将使服务器应用程序能够确定它所应该…

windows性能计数器搜集方法
windows性能计数器搜集方法 PerfMon-Windows性能监视器是个好东西,可以辅助我们分析发生问题时间段服务器资源占用情况,但是部署性能计数器确实一个相当麻烦的事情,往往这种枯燥的事别人还做不了,只能由我们这些希望获取到PerfMon…

【HDU】3308 LCIS
1 #include<cstdio>2 #define MAXN 1000103 struct node4 {5 int left,right,val;6 };7 int a[MAXN];8 node tree[MAXN<<2];9 inline int MAX(int x,int y) 10 { 11 return x>y?x:y; 12 } 13 inline int MIN(int x,int y) 14 { 15 return x>y?…

【基础知识】如何在浏览器中查找元素属性节点
首先,什么是属性节点?属性节点是在编写html代码时,在html标签中添加的属性。 本文重点:如果您用的ie,我恳请您不要在用了,你们的每次使用都是打在前端工程师身上的一发子弹 代码实例: <!DOC…

C#系列五《多样化的程序分支》
上一篇介绍了C#程序设计分支的基本概念与基本操作,这篇的主题是高级的程序分支,例如:分支的嵌套与分支是使用的场景!与三元运算符(?:),废话少说还是开始吧! 1.三元运算符【?:】 三元运算符分为三…

Vue报错:Uncaught RangeError: Maximum call stack size exceeded
vue项目放在服务器上,报错如下: 堆栈溢出: 1、原因:有小类到大类的递归查询导致溢出 2、解决方法思想: A、在做递归查询时候由大类到小类去查询 B、匹配结果后及时return 退出,防止过多查询 转载于:https:/…

【Echarts】当页面宽度改变时如何使图表宽度自适应
问题: 当对echats不作任何处理时,图表宽度不会自适应,如图所示(变绿的区域为echarts选中的div)。 加载完后: 收缩浏览器页面之后: 解决方法: 编写js函数,当页面大小变…

【C#】登陆次数限制
我们在网上登陆的时候有些网站在用户多次输错密码之后会自动把账户冻结,不能在进行登陆,笔者这次做的winform程序就是要实现这种功能。 功能一:根据数据库字段判断用户名和密码是否匹配; 功能二:如果输入错误自动记录连…

linux 使用sendmail发送邮件
1111111111 转载于:https://www.cnblogs.com/We612/p/11274139.html

[转]MySQL innoDB数据插入性能优化
转载自: http://hiyijian.blog.163.com/blog/static/173086472201121621326471/ 起因:有一个innoDB引擎的表Table,在一个大概3000次的foreach循环中执行 INSERT INTO Table(columnA, columnB) VALUES (valueA, valueB)结果居然超出了60S的php执行限制&am…

vue+ivew-admin开发项目,内存占用过大解决办法
项目用的ivewadmin ivewUI,直接从github上拉下来用的,配置也没改,我们页面比较多,大该30个页面的样子,一启用,我们的电脑就卡了,然后,看一下,内存占用 1.5G了,…

腾讯微视:向前一步是悲壮,向后一步是绝望zz
“换做以往的任何一场战争,微博之战、搜索之战和电商之战——大量投入但始终不见效果,打到现在腾讯肯定已经交牌了。微视的不同之处在于,它有些悲壮,因为这是腾讯最不想交出的一张牌。” 文 | 《财经》记者高洪浩 编辑|宋玮 如果有…

[C]线程中的数据
线程的私有存储空间包括: 栈(一般情况下是私有的)线程局部存储(部分操作系统提供)寄存器(包括PC寄存器) 从C程序员的角度来看: 线程私有: 局部变量函数的参数线程局部存储…

【css】如何使页面压缩时文本内容不换行
问题描述: 当页面变小时,有些情况下会出现下图所示的情况,即文本自动换行 页面变小前: 变小后: 解决方法: 使用CSS添加一个控制语句 .fence_control{white-space: nowrap; } 并在文本所在的标签属性中添加该控制 …

程序员面试题精选100题(61)-数对之差的最大值
题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。 分治策略: 通常蛮力法不会是最好的解法,…

Unity UGUI获取鼠标在屏幕的准确点击位置
想要获取鼠标在屏幕的准确点击位置,千万不要胡乱写,什么转化坐标系,什么Ray射线检测都是浮云。 1,转化坐标系只是相对而言,并不能准确实现当前鼠标点击在屏幕的位置; 2,Ray检测,hit是…

Numpy学习笔记(下篇)
目录 Numpy学习笔记(下篇)一、Numpy数组的合并与分割操作1、合并操作2、分割操作二、Numpy中的矩阵运算1、Universal Function2、矩阵运算3、向量和矩阵运算三、Numpy中的聚合操作四、Numpy中的arg运算1、索引操作2、排序和索引使用五、Fancy Indexing六…

VC串口通信编程-2
VC串口通信编程 (2009-07-08 13:48:40) 转载▼Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般…

【bootstrap】如何解决页面缩小后上方导航栏格式变化的问题
问题描述: bootstrap官方模板中上方导航栏当缩小到一定程度后会发生格式的变化,但我想取消这种变化 页面缩小前: 页面缩小后: 解决方法: 经过阅读bootstrap的css代码后发现了这么一行代码: 将其删除后问…

ASIHttpRequest使用前的配置
ASIHttpRequest使用前的配置 1、从以下地址获取ASIHttpRequest相关资源文件: Github project page: http://github.com/pokeb/asi-http-request/tree Download the latest version: http://github.com/pokeb/asi-http-request/tarball…

当面试官问这些基础的Python问题时,竟然还有80%的人不会!
怎样才能开始一个交互式解释器的会话? 在Windows下可以通过点击开始按钮,选择“程序”,点击“Python”,然后选择“Python(command line)”菜单选项来开始一个交互会话。 你应该在哪里输入系统命令行来启动一…

xcode 4.3.2 use storyboard创建TableView
xcode 4.3.2 use storyboard 使用TableView,显示一个颜色列表,表格包括一张图片,一个文本,一行副文本。 TableView 呈现列表格式的数据,每一行是一个UITableViewCell对象,每个UITableViewCell可以显示文本标…