JQuery
1. 什么是JQuery
- JQuery是一个快速简洁的JavaScript框架。JQuery设置的宗旨是“write less,do more”,即倡导写更少的代码做更多的事情。它封装了JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作,事件处理,动画设计和Ajax交互。
- JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已。
2. JQuery的快速入门
2.1 方式一
-
下载JQuery。
-
导入jQuery的js文件:在
<head>导入min.js<script src="js/jquery-3.3.1.min.js"></script>这里注意相对路径!
-
使用,写代码
目前JQuery有三个大版本:
1.x:兼容ie678,使用最为广泛,官方只做bug维护,功能不在新增。因此一般项目来说,使用1.x版本就可以。
2.x:不兼容IE678,很少有人用官方只做bug维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x。
3.x:不兼容IE678,只支持最新的浏览器。除非特殊要求,一般不会使用3.x版本,很多老的JQuery插件不支持这个版本。该版本是目前官方主要更新维护的版本。
jquery-xxx.js 与 jquery-xxx.min.js区别:
- jquery-xxx.js:开发版本。给程序员看的,有良好的缩进和注释。体积大一些
- jquery-xxx.min.js:生产版本。程序中使用,没有缩进。体积小一些。程序加载更快
2.2 方式二
-
使用cdn引入
//百度 <head> <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> </head> //新浪 <head> <script src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> </head> 直接百度jQuery cdn就行 -
使用,写jQuery代码
3. jQuery的基本语法
3.1 公式
$(selector).action()
- 美元符号
$定义jQuery - 选择符
(selector)查询和选择HTML元素 action()表示执行对元素的操作。
3.2 理解$(function(){})
$(function(){js代码});的作用是在HTML文档完全加载完后再执行js代码。它是jQuery入口函数。- 它是
$(document).ready(function(){js代码});的简写。
注:window.onload是js中的代码。
3.3 jQuery对象与JavaScript对象的区别与转换
-
jQuery对象在操作时更加方便
<div id="div1">文本内容...</div> <div id="div2">文本内容...</div> //通过JavaScript获取id var divs =document.getElementsById("div1"); //通过jQuery获取id var divs2 =$("#div2"); -
jQuery对象和js对象方法不通用的
-
两者相互转换
jq -- > js : jq对象[索引] 或者 jq对象.get(索引)
js -- > jq : $(js对象)
4. 选择器
4.1 作用
- 用来筛选具有相同特征的元素
4.2 回顾DOM中的选择器
// 按ID查找:
var a = document.getElementById('dom-id');
// 按tag查找:
var divs = document.getElementsByTagName('div');
// 查找
:
var ps = document.getElementsByTagName('p');
…….
这些代码有点繁琐,jQuery选择器可以帮助我们快速定位到一个或者多个DOM节点。
4.3 按id查找
//查找<div id="abc">
var div=$("#abc");
4.4 按tag/标签查找
var ps=$("p");//返回所有的<p>节点
ps.length;//数一数页面有多少个<p>节点
4.5 按class查找
var a=$(".red");//所有节点包含class="red"都返回
//例如
//<div class="red">...</div>
//<div class="green red">...</div>
4.6 按属性查找
- 一个DOM节点除了id和class外还可以有很多属性。很多时候按属性查找会很方便,比如在一个表单中按照属性查找:
var email=$('[name=email]');//找出<??? name="email">
var passwordInput=$('[type=password]');//找出<??? type="password">
var a=$('[items="A B"]');//找出<??? items="A B">
- 当属性的值包含空格等特殊字符时,需要用双括号括起来。
- 按照属性查找还可以使用前缀查找和后缀查找
var icons=$('[name^=icon]');//找出name属性值以icon开头的DOM
//例如name="icon-1",name="icon-2";
var names=$('[name$=with]');//找出所有name属性值以with结尾的DOM
//例如:name="startswith",name="endswith"
4.7 其他的重要选择器
参考how2j教程:
5 操作DOM
5.1 内容操作:Text/HTML/val
- html():获取/设置元素的标签体内容。
<a><font>内容</font></a>– –><font>内容</font>
$("#d1").html();
//通过HTML获取元素内容,如果有子元素,保留标签。
$("#d1").html("文本内容");
//传入参数就变成设置文本
- text(): 获取/设置元素的标签体纯文本内容。
<a><font>内容</font></a>- ->内容
$("#d1").text();
//获取元素内容,如果有子元素,不包含子元素标签
$("#d1").text("文本内容");
//传入参数就变成设置文本
- val(): 获取/设置元素的value属性值。
<input type="text" id="input1" value="默认值">
$("#input1").val();//输出值:默认值
相当于:
document.getElementById("input1").value;
$("#input1").val("文本内容");
//传入参数就变成设置文本
5.2 css操作:
主要是通过下面的几个方法API来改变元素的样式。
-
addClass():添加class属性值
$("#d").addClass("pink"); -
removeClass():删除class属性值``$("#d").removeClass("pink");`
-
toggleClass():切换class属性值
$("#d").toggleClass("pink");toggleClass("one"):判断如果元素对象上存在class="one",则将属性值one删除掉。如果元素对象上不存在class="one"。则添加。
-
css():
css(property,value);
第一个参数是样式属性,第二个参数是样式值。
css({p1:v1,p2:v2});
参数是{}包含的属性值对。属性值对之间用`,`分割属性值之间用`:`分割属性和值都需要用引号 “
$("#d1").css("background-color","pink");
$("#d2").css({"background-color":"pink","color":"green"});
5.3 对节点的CRUD
- append():父元素将子元素追加到末尾
- 对象1.append(对象2): 将对象2添加到对象1元素内部,并且在末尾
prepend():父元素将子元素追加到开头 * 对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头
appendTo(): * 对象1.appendTo(对象2):将对象1添加到对象2内部,并且在末尾
prependTo(): * 对象1.prependTo(对象2):将对象1添加到对象2内部,并且在开头
after():添加元素到元素后边
* 对象1.after(对象2): 将对象2添加到对象1后边。对象1和对象2是兄弟关系before():添加元素到元素前边 * 对象1.before(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系
insertAfter() * 对象1.insertAfter(对象2):将对象2添加到对象1后边。对象1和对象2是兄弟关系
insertBefore() * 对象1.insertBefore(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系
remove():移除元素 * 对象.remove():将对象删除掉
empty():清空元素的所有后代元素。
对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点
5.4 jquery 元素/标签的属性
-
attr():获取/修改元素的属性
-
removeAttr():删除元素的属性
<h1 id="h" align="center" game="LOL">居中标题</h1>
//获取:
$("#h").attr("align")//输出值为center
//修改
$("#h").attr("align","right") ;//将属性align的值设置为right
//删除
$("#h").removeAttr("align");//删除align属性
- prop():获取/设置元素的属性
- removeProp():删除属性
$("#c").prop("game")//方法同上
......
-
attr和prop区别
如果操作的是元素的固有属性,则建议使用prop
如果操作的是元素自定义的属性,则建议使用attr
5.5 显示和隐藏DOM
- 显示和隐藏DOM元素的使用非常普遍,jQuery直接提供show()和hide()方法。
<p>hello world</P>
var a=$("p");
a.hide();
a.show();
- 除此之外还可以通过设置css的display属性来显示隐藏元素,但没有上面的方便。
6. jQuery动画
三种方式显示和隐藏元素
- 默认显示和隐藏方式。
1. show([speed,[easing],[fn]])
参数:
speed:动画的速度。三个预定义的值("slow","normal","fast")或表示动画时长的毫秒数值。如:1000
easing:用来指定切换效果,默认是"swing",可用参数"linear"。(swing: 动画执行时效果是先慢,中间快,最后又慢。 linear:动画执行时速度速度是匀速的)
fn:在动画完成时执行的函数,每一个元素执行一次。
2. hide([speed,[easing],[fn]])
3. toggle([speed],[easing],[fn])//切换显示和隐藏,点一下显示,再点一下隐藏。
- 滑动显示和隐藏方式
1. slideDown([speed],[easing],[fn])
2. slideUp([speed,[easing],[fn]])
3. slideToggle([speed],[easing],[fn])
- 淡入淡出显示和隐藏
1. slideDown([speed],[easing],[fn])
2. slideUp([speed,[easing],[fn]])
3. slideToggle([speed],[easing],[fn])
7. 遍历
-
js的遍历方式
for(初始化值;循环结束条件;步长)
-
jq的遍历方式
2.1
jq对象.each(callback)语法:jquery对象.each(function(index,element){});
index:就是元素在集合中的索引
element:就是集合中的每一个元素对象
this:集合中的每一个元素对象
回调函数返回值:
true:如果当前function返回为false,则结束循环(break)。
false:如果当前function返回为true,则结束本次循环,继续下次循环(continue)
2.2
$.each(object, [callback])2.3
for..ofjquery 3.0 版本之后提供的方式 for(元素对象 of 容器对象)
8. 事件
8.1 鼠标事件
mousedown 表示鼠标按下
mouseup表示鼠标弹起
mousemove:当鼠标进入元素,每移动一下都会被调用
mouseenter:当鼠标进入元素,调用一下,在其中移动,不调用 经过其子元素不会被调用
mouseover:当鼠标进入元素,调用一下,在其中移动,不调用 当鼠标经过其子元素会被调用
mouseleave表示鼠标离开 当鼠标经过其子元素不会被调用
mouseout表示鼠标离开 当鼠标经过其子元素会被调用
8.2 键盘事件
keydown:键盘按下时触发
keyup:键盘松开时触发
keypress:按一次键后触发
8.3 点击事件
click() 表示单击
dblclick() 表示双击
$(function(){
$("#b").click(function(){
$("#message").html("单击按钮");
});
$("#b").dblclick(function(){
$("#message").html("双击按钮");
});
});
8.4 加载事件
$(document).ready();
$(function(){})-->常用
//举例
<script>
$(document).ready(function(){
$("#message1").html("页面加载成功");
});
$(function(){
$("#img").load(function(){
$("#message2").html("图片加载成功");
});
});
</script>
<div id="message1"></div>
<div id="message2"></div>
<img id="img" src="https://how2j.cn/example.gif">
8.5 绑定事件
$("selector").on("event",function);//绑定事件
$(function(){
$("#b").on("click",function(){
$("#message").html("单击按钮");
});
$("#b").on("dblclick",function(){
$("#message").html("双击按钮");
});
});
$("selector").off("event");//解除绑定
8.6 其他的重要事件
9. 插件
实现方式:
1. $.fn.extend(object)
* 增强通过Jquery获取的对象的功能 $("#id")
2. $.extend(object)
* 增强JQeury对象自身的功能 $/jQuery