了解jQuery
JQuery是一个兼容多浏览器的 类库,核心理念是write less,do more(写得更少,做得更多)。是一个快速的简洁的 框架,可以简化查询DOM对象、处理事件、制作动画、处理Ajax交互过程。在2006年1月由美国人John Resig在纽约的barcamp发布。
jQuery版本
1.x.x
兼容低版本浏览器IE8-
代码过于庞杂,性能不高
2.x.x
已经不支持IE低版本浏览器IE8-
3.x.x
3.0 版本是从 2.0 版本分支出来的,但由于改动过大,因此更新了主版本号
不支持IE低版本浏览器
性能大幅度提高(推荐使用)
..* (主版本-次版本-补丁)
下载与文档
官网下载
http://jquery.com/download/
CDN下载
https://www.bootcdn.cn
帮助文档
http://jquery.cuishifeng.cn/
下面内容只是对jQuery的部分描述,想了解具体全面的请查看文档
插件
插件(Plugin)也称为jQuery的扩展。以jQuery核心代码为基础编写的符合一定规范的应用程序。通过js文件的方式引用。
常用插件:
jqueryUI 官方插件,功能多且全面,
官网:www.jqueryui.com
jquery.validation 表单验证插件
官网:https://jqueryvalidation.org/
jquery.easyUI 是一组基于jQuery的UI插件集合
Demo:http://www.jeasyui.net/
bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目
官网:http://v3.bootcss.com/
使用插件:
导入的插件都放在lib的文件夹中,基于jquery的插件在使用引入前要引入jquery
< src=\"../lib/jquery-3.2.1.js\"></ >
< src=\"../lib/bootstrap-3.3.7-dist/js/bootstrap.min.js\"></ >
jQ常用原型对象的方法
css(attr[,val])
获取/改变元素style属性内联样式
取值:css(attr),css([‘color’,’text-align’]) <=> getComputedStyle[attr]
赋值:css(attr,val),css({attr:val});
val(v)
获取/设置匹配表单元素的值(等同于原生js中的value属性)
取值:input.val()
赋值:input.val(v)
v:字符串
v:数组(一般用于单选/复选框的勾选)
v:函数function(idx,val){ return 值} 函数内部一定要返回值
html()
等同于原生js中的innerHTML
取值div.html():取得第一个匹配元素的html内容
赋值div.html(‘katsuki’):设置匹配元素的内容
text()
取得所有匹配元素的文本内容。与html()用法相同
Class
addClass()/removeClass()
添加/删除类,支持多个类同时添加或删除
toggleClass()
如果存在(不存在)就删除(添加)类。
hasClass(类名)
检查当前的元素是否含有某个特定的类,如果有,则返回true
each(function(idx,ele){})
用于遍历jquery对象
return true; 跳过当前循环,进入下一个循环(等效原生js中得continue)
return false; 退出整个each循环(等效原生js中得break)
jQuery大部分方法的共性
无参数时为取值,带参数时为赋值
取值:取得第一个匹配元素的值
赋值:设置所有匹配元素的值
jQuery基本使用
获取jquery对象
jQuery(选择器|dom节点,上下文对象)$(选择器|dom节点,上下文对象)
上下文对象可以是选择器、jquery对象、dom节点
jquery对象只能用jquery的方法
jquery对象得到的是类数组
length 若length为0,说明获取不到该jquery对象
jquery 得到版本号,用于判断是否为jquery对象
[索引] 获取dom节点
dom节点与jquery对象的转换
vjquery对象转成dom节点
jquery对象[索引]
dom节点转成jquery对象
jQuery(dom节点)
延迟代码执行 jQuery(function($){})
jQuery(function($){
//使用原理
new jQuery().init(\".katsuki\");
//约定俗成:使用jQuery对象的变量前加 $
//调用的简化
var $kasami = jQuery(\"#kasami\");
//最简调用,$katsuki是jquery对象
var $katsuki = $(\".katsuki\");
console.log($katsuki);
/* 输出打印得到数组
jQuery.fn.init(2)
0: div.katsuki
1: div.katsuki
length: 2
*/
//$katsuki[0]是dom节点,不是jQuery对象,不能继续调用jQuery方法
//除非用$($katsuki[0])将其再转换为jQuery对象
console.log($katsuki[0]);
var $katsuki2 = $(\".katsuki\",$kasami);
//获取到kasami里面的katsuki,数组形式
console.log($katsuki2);
//输出 1
console.log($katsuki2.length);
//输出 版本号
console.log($katsuki.jquery);
//jQuery对象调用方法,赋值时对应的类数组全部改动
//获取时只获取第一个的对应值 0: div.katsuki
console.log($katsuki.css(\"color\",\"#ccc\"));
console.log($katsuki.css({color:\"#58bc58\",backgroundColor:\"pink\"}));
})
<div id=\"kasami\">
<div class=\"katsuki\">katsuki</div>
</div>
<div class=\"katsuki\">katsuki</div>
jquery选择器
基本选择器
与js大体相同
表单选择器
:text
:radio //匹配所有单选按钮
:checkbox //匹配所有复选按钮
:selected //获取已选择的option元素
:checked //匹配所有被选中的元素(复选框、单选框等,option选项)
可见性
:hidden //匹配所有不可见元素(display:none),或者type为hidden的元素
:visible //匹配所有可见元素
jQuery(function(){
//得到katsuki所在的option
var $selection = $(\":selected\");
//得到被选中的复选框,单选框,option选项
var $checked = $(\":checked\");
//得到不可见元素
var $hidden = $(\"#katsuki :hidden\");
//is(expr|obj|ele|fn)
//根据选择器、DOM元素或 jQuery 对象来检测匹配元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true
var $katsuki = $(\"#katsuki\");
//输出 true
console.log($katsuki.is(\".kasami\"));
})
<style>
#katsuki .Grisaia{display:none;}
</style>
<body>
<div id=\"katsuki\" class=\"kasami\">
<div class=\"Grisaia\"></div>
</div>
<select>
<option value=\"katsuki\">katsuki</option>
<option value=\"kasami\">kasami</option>
</select>
<input type=\"checkbox\" checked/>
<input type=\"checkbox\" checked/>
<input type=\"radio\" checked/>
</body>
常用筛选器及其方法
筛选选择器
:odd/:even;筛选奇偶数
gt(n)匹配所有大于给定索引值的元素 (索引支持负数)
:lt(n)匹配所有小于给定索引值的元素 (索引支持负数)
:contains(katsuki) 筛选出包含“katsuki”的元素
筛选方法
first()/last(): 获取集合中第一个/最后一个元素
eq(index|-index): 获取第n个元素,n支持负数(表示从后面查找)
filter(选择器|jq对象|dom节点) 缩小匹配范围,将被匹配到的jq对象进行过滤,得到过滤后的jq对象,也就是得到满足条件。
not(选择器|jq对象|dom节点) 缩小匹配范围,将被匹配到的jq对象进行过滤,除去过滤后的jq对象,也就是得到不满足条件。
has(选择器|dom节点) 将匹配到的jq对象进行过滤,匹配到有这个儿子(子元素)的jq对象
jQuery(function){
//获取到数组下标值为奇数,1 3
$(\"#katsuki li:odd\").css(\'background-color\',\'pink\');
//获取到数组下标值为偶数,0 2
$(\"#katsuki li:even\").css(\'backgroundColor\',\'#58bc58\');
//获取到下标值大于2的
$(\"#katsuki li:gt(2)\").css(\'backgroundColor\',\'#ccc\');
//获取包含kasami内容元素
$(\"#katsuki li a:contains(kasami)\").css(\'color\',\'red\');
//获取$(\"#katsuki li\")对象中下标为0的元素
$(\"#katsuki li\").eq(0).css(\'color\',\'pink\');
//获取$(\"#katsuki li\")对象过滤出下标值为奇数的
$(\"#katsuki li\").fliter(\":odd\").css(\'color\',\'purple\');
}
<ul id=\"katsuki\">
<li>katsuki</li> //0
<li>katsuki<a herf=\" :;\">kasami</a></li> //1
<li>katsuki</li> //2
<li>katsuki</li> //3
</ul>
元素关系方法
查找子元素
find(expr|obj|ele): 查找后代元素
children([expr]): 取得匹配元素的所有子元素。
查找父级元素
parent([expr]): 获取父元素
parents([expr]): 取得所有父级元素
closest(expr|obj|ele): 从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素
offsetParent(): 返回第一个有定位属性(absolute,relative,fixed)的父元素,如果没有定位父级,则返回html元素
查找兄弟元素
next([expr]): 返回下一个同辈元素 => nextElementSibling
prev([expr]): 获取前一个同辈元素 => previousElementSibling
nextAll([expr]): 获取当前元素之后所有的同辈元素
prevAll([expr]) 获取当前元素之前所有的同辈元素
siblings([expr]) 获取当前元素的所有兄弟元素(除自身以外的所有兄弟元素 = * prevAll + nextAll)
jQuery(function($){
var $kasami = $(\".kasami\");
//获取kasami元素的后代元素中kastuki类名元素
var $katsuki = $kasami.find(\".katsuki\");
//获取到kasami元素的子元素a
var $children = $kasami.children(\"a\");
//获取kasami元素的父级元素
var $Grisaia = $kasami.parent();
//获取kasami元素的所有父级元素,包含body、html
var $allParents = $kasami.parents();
//获取span在最结构上最靠近的div
var $span = $(\"span\");
console.log($span.closest(\"div\"));
//39的a元素的下个同级元素
console.log($children.next());
})
<div class=\"Grisaia\">
<div class=\"kasami\">
<div class=\"katsuki\"><a href=\"#\">666</a></div>
<a href=\"#\">39</a>
<div><span>77</span></div>
</div>
</div>
jQ对象节点的操作
创建jq节点
$(\"<div/>\")
元素添加
往父元素内部追加
append(content|obj|ele|fn): 给父元素添加最后一个子元素
appendTo(父元素)
prepend(content|obj|ele|fn): 给父元素添加第一个子元素
prependTo(父元素)
外部插入内容(添加为兄弟元素)
after(): 在元素后面插入内容
before(): 在元素前面插入内容
insertAfter(兄弟元素)
insertBefore(兄弟元素)
元素删除
remove() 删除元素
empty() 清空内容
元素复制
clone([Event[,deepEvent]])
Event:(true 或 false)是否复制元素的行为,默认为false
deepEvent: (true 或 false)是否复制子元素的行为,默认为Event的值
jQuery(function(){
//父元素添加子元素
var $katsuki = $(\"<div>katsuki</div>\");
var $(\"body\").append($katsuki);
//上面等效于下面
$(\"<div>katsuki</div>\").appendTo($(\"body\"));
//当前元素添加兄弟元素
var $h2 = $(\"<h2>katsuki</h2>\");
$(\"p\").after($h2);
//上面等效于下面
$(\"<h2>katsuki</h2>\").insertAfter($(\"p\"));
//元素复制
var $p = $(\"p\");
$p.on(\"click\",function(){
console.log(\"katsuki\");
})
//clone(true),会将元素行为也复制,也有点击效果
$p.clone(true).insertAfter($p);
//$(\"p\").empty();
})
<body>
<p>kasami</p>
</body>
jQ对象属性操作
dom属性
js中是点进行设置和取值
jQ中
prop(key,val) 添加属性
prop(key) 获取属性值
$(\"input[type=\'checkbox\']\").prop(\"checked\", true);
$(\"input[type=\'checkbox\' checked]\").prop(\"checked\");//true
html属性
js中setAttribute() getAttribute()
jQ中
attr(key,val) 添加属性
attr(key) 获取属性值
$(\"img\").attr(\"src\",\"katsuki.jpg\");
事件
事件绑定 on(type,[选择器],fn)
selector(选择器): 把本来绑定给selector的事件委托给它的父级.(fn的this指向被执行的selector)
可以给同一元素绑定多个同一事件
事件命名空间(对事件加以细分)
格式:事件类型.自定名字
$(\"#kasami\").on(\"click.ka\",\".katsuki\",function(){
//这里由于传入中间参数,改变this指向传入的元素
console.log(this); //输出 katsuki标签
})
<div id=\"kasami\">
<div class=\"katsuki\">katsuki</div>
</div>
支持自定义事件的绑定
$(ele).on(\'katsuki\',function(){})
触发事件:$(ele).trigger(\'katsuki\');存在事件冒泡
触发事件:triggerHandler(type)
不会执行浏览器默认行为,也不会产生事件冒泡
off(): 清除绑定事件
没有参数,清除当前元素所有事件
有事件类型参数 ,清除当前元素所有该类型的事件
$(\"#kasami\").on(\"click.ka\",\".katsuki\",function(){
console.log(666);
})
$(\"#kasami\").on(\"click.tsu\",\".katsuki\",function(){
console.log(18);
})
//$(\"#kasami\")绑定事件全部清除
$(\"#kasami\").off();
//清除click.ka事件绑定,click.tsu未改动
$(\"#kasami\").off(\"click.ka\");
jq动画
基本动画
show(duration)、hide(duration) 同时改变元素的宽高、透明度
slideDown(duration,fn)、slideUp(duration,fn)、slideToggle(duration,fn) 改变元素的高度
fadeIn(duration,fn)、fadeOut(duration,fn)、fadeToggle(duration,fn)、fadeTo(duration,opacity,fn) 改变元素的透明度
jQuery(function(){
$(\"#btn\").on(\"click\",function(){
$(\"img\").fadeToggle(400);
})
})
<img src=\"../img/katsuki.jpg\" width=\"200\" height=\"200\">
<input type=\"button\" value=\"显示隐藏\" id=\"btn\" />
自定义动画
animate (params,[speed],[fn])
animated
获取正在执行动画的元素,一般与is()方法配合使用,用于判断元素是否处于动画状态
jQuery(function(){
$(\"#btn\").on(\"click\",function(){
$(\"img\").animate({width:0},1000,function(){
//动画结束后的执行函数
$(\"img\").css(\"width\",\"200px\");
})
})
})
<img src=\"../img/katsuki.jpg\" width=\"200\" height=\"200\">
<input type=\"button\" value=\"显示隐藏\" id=\"btn\" />
动画队列
一个元素上的动画:
当animate中存在多个属性时,动画同时发生
当同一个元素链式调用animate时,动画是按顺序发生(队列)
不同元素上的动画:
默认情况下,动画同时发生
回调函数内的动画等到当前动画执行完后才接着执行
stop([clearQueue],[jumpToEnd])
不加参数:停止当前元素所有正在运行的动画。
垂直手风琴案例
jQuery(function($){
//鼠标移入标题 h2 ,紧跟的同级 div 进行下滑动画
//鼠标移出标题 h2 ,紧跟的同级 div 进行上滑动画
//若不添加stop(),鼠标不断移入移出会触发多次动画效果
//每次都会执行完,直到对应移入移出次数的动画执行完毕
$(\".katsuki\").on(\"mouseover\",\"h2\",function(){
$(this).next().stop().slideDown(1000);
}).on(\"mouseout\",\"h2\",function(){
$(this).next().stop().slideUp(300);
})
})
<style< 继续阅读与本文标签相同的文章
让5G商用为经济增长赋能
户外LED广告机如何尽显示之力,享智慧之极?
-
个人音视频常用工具介绍
2026-05-18栏目: 教程
-
用自定义监控实现 GPU 异常状况的检查与报警
2026-05-18栏目: 教程
-
与你同行,才能无障碍
2026-05-18栏目: 教程
-
分布式Id - redis方式
2026-05-18栏目: 教程
-
HTML5 容器入门解析:支付宝 Hybrid 方案原理与实战
2026-05-18栏目: 教程
