jQuery简介
jQuery是一个快速、简洁的JavaScript工具库。jQuery的宗旨是“write less,do more”,写更少的代码,做更多的事情。jQuery封装了JavaScript常用的功能代码,提供了一套易于使用的api,可以跨多种浏览器工作,使HTML文档的遍历、事件处理、动画设计和Ajax交互等操作变得更加简单
jQuery中的版本
- 1.x.x:兼容IE678,使用最为广泛的,官方只做bug维护,功能不再新增。因此对一般项目来说使用1版本就够了。最终版本1.12.4
- 2.x.x:不兼容IE678,只做bug维护,功能不再新增,如果不考虑兼容低版本的浏览器可以使用2版本。最终版本2.2.4
- 3.x.x:不兼容IE678,只支持最新的浏览器,实际开发中一般不会使用最新版本的jQuery,因为很多的jQuery插件并不一定立即支持最新版的jQuery,官方目前在更新的就是3版本
语法
通过选取HTML元素,并对选取的元素进行某些操作
$(selector).action()
selector:需要查询的元素(里面写选择器,除了支持css的选择器,还有一些特有的选择器)
action:对该元素执行的操作
jQuery的入口函数:
$(document).ready(function(){
//执行代码
});
//简写形式:
$(function(){
//指定代码
});
jQuery中的入口函数和JavaScript入口函数window.onload对比:
区别点 | window.onload | $(document).ready() |
执行时机 | 等待整个网页全部加载完毕,然后执行该方法中的代码 | 等待网页中的DOM结构加载完毕,就会执行该方法中的代码 |
执行次数 | 只能执行一次,如果是第二次,那么第一次的执行会被覆盖 | 可以执行多次,不会被覆盖(就是可以写多个该方法) |
jQuery对象和js对象之间的转换
虽然jQuery也是使用js写的,但是jQuery对象和js对象对应了自己独有的属性和方法,jQuery对象不能使用js中的方法,js对象也不可以使用jQuery中的方法,如果需要使用对方的API就需要进行转换:
- js中的DOM对象转换为jQuery对象:$(js对象)
- jQuery对象转换为js中的对象:jQuery对象[索引] 或者 jQuery对象.get(索引)
$(function (){
//获取一个js中的对象
var html1 = document.getElementById("box1")
//获取一个jQuery中的对象
var html2 = $("#box1")
console.info("js中的对象内容--》"+html1.innerText);
console.info("jQuery中对象的内容--》"+html2.html());
// //js对象中能使用jQuery的方法吗? 不能
// console.info(html1.html());
// //jQuery对象能使用js中的方法吗? 不能
// console.info(html2.innerText);
//js中的对象和jQuery中的对象互相转换
//调用jQuery中的get方法就可以得到一个js对象
console.info("将jQuery对象转换为js对象,然后使用innerText方法--》"+html2.get(0).innerText);
//给使用$()中放入js对象,就能将其转换为jQuery对象
console.info("将js对象转换为jQuery对象,然后使用html()方法--》"+$(html1).html())
})
开发中,使用这种方便的方式进行对象之间来回的转换,让我们js和jQuery中的方法都可以使用,让开发更加方便,而且还能实现更多的效果
jQuery中的DOM操作
对DOM树中的文本和值进行操作
方法 | 说明 |
val([value]) | 获得/设置该元素value属性的值,有参数就是设置值没有就是得到值 |
text([value]) | 获得/设置该元素中的文本内容,有参数就是设置值没有就是得到值 |
html([value]) | 获得/设置该元素的带标签体的内容,有参数就是设置值没有就是得到值 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.p1{background-color:red}
</style>
<script src="../js/jquery-3.4.1.js"></script>
</head>
<body>
<p class="p1">段落一</p>
<p id="pp2">段落二</p>
<p >段落三</p>
<div id="box"><p>哈哈</p></div>
<script>
$(function (){
//给元素添加一个class
$("#pp2").addClass("p1");
//删除元素的class
$("p:first").removeClass();
//原本有该class的删除掉,没有的添加
$("p").toggleClass("p1");
//获取value
var value = $("input:first").val();
console.log(value);
//获取标签中的文本内容
var text = $("#box").text();
console.log(text);
//获得标签中的全部内容,包括标签体
var html = $("#box").html();
console.log(html);
})
</script>
</body>
</html>
对DOM树中的属性进行操作
方法 | 说明 |
attr(name,[value]) | 获得/设置该元素指定属性的值,有第二个参数就是设置值没有就是得到值 |
prop(name,[value]) | 获得/设置该元素指定属性的值,有第二个参数就是设置值没有就是得到值 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../js/jquery-3.4.1.js"></script>
</head>
<body>
<input type="checkbox" value="1" id="eat">吃
<input type="checkbox" value="2">睡
<script>
$(function (){
//给type为checkbox的元素加上属性checked=true
$("input:checkbox").prop("checked",true);
//获得id为eat的元素中的checked属性的值
console.log($("#eat").prop("checked"))//可以得到 true,就算没有该属性也会返回false
console.log($("#eat").attr("checked"))//不能得到,返回undefined
//让prop和attr获取一个不存在的属性
console.log($("#eat").prop("name"))//会返回空
console.log($("#eat").attr("name"))//会返回undefined
})
</script>
</body>
</html>
(在获取checked和selected属性的值时要使用prop,其他情况功能相同,获取不到时prop会返回空或者false,attr会返回undefined)
jQuery中的遍历
原始遍历方法
for (var i=0;i<数组length;i++){
//数组[i]
}
jQuery中对象中的遍历方法
数组.each(function (index,element){
//index element
})
index:元素在数组中的索引值,element:代表数组中的这个元素
jQuery中全局的遍历方法
$.each(数组,function (index,element){
//index element
})
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery中的遍历</title>
<script src="../js/jquery-3.4.1.js"></script>
<script>
$(function (){
//获得所有的li元素对象
var $city = $("ul li");
//使用普通的for循环
for (var i=0;i<$city.length;i++){
console.log($city[i].innerText);
}
//使用jQuery中对象的each方法
$city.each(function (index,element){
console.log(index+"----->"+element.innerText);
})
//使用jQuery中全局的each方法
$.each($city,function (index,element){
console.log(index+"====>"+element.innerText);
})
})
</script>
</head>
<body>
<ul>
<li>北京</li>
<li>上海</li>
<li>广州</li>
<li>深圳</li>
</ul>
</body>
</html>
jQuery中的事件
大多数DOM事件在jQuery中都有对应的一个方法(去掉了on)
jQuery对象.事件方法(function(){
})
常用的事件方法:
方法名 | 描述 |
$(document).ready() | 文档加载完毕后自动执行的函数 |
click() | 点击元素时 |
bdlclick() | 双击元素时 |
focus() | 元素获得焦点时 |
blur() | 元素失去焦点时 |
change() | 元素中的内容改变时 |
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery中的事件</title>
<script src="../js/jquery-3.4.1.js"></script>
<script>
$(function (){
var $i = $("input:text");
$i.focus(function (){
$("#ps").text("正在输入···")
})
$i.blur(function (){
$("#ps").text("")
})
})
</script>
</head>
<body>
<input type="text" ><span id="ps"></span>
</body>
</html>