JQuery基础学习笔记
程序员文章站
2022-04-29 14:12:16
...
主要内容
- JQuery基础
- 概念
- 快速入门
- Jquery对象和JS对象的区别与转换
- 选择器
- DOM操作
- 案例
1. Jquery基础
- 概念
- 一个javaScript框架,简化js开发
- javaScript框架 :本质上是一些js文件,封装了js的原生代码而已
- 快速入门
- 步骤
- 下载JQuery
- 目前jQuery有三个大版本:
1.x:兼容ie678,使用最为广泛的,官方只做BUG维护, 功能不再新增。因此一般项目来说,使用1.x版本就可以了,
最终版本:1.12.4 (2016年5月20日)
2.x:不兼容ie678,很少有人使用,官方只做BUG维护, 功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,
最终版本:2.2.4 (2016年5月20日)
3.x:不兼容ie678,只支持最新的浏览器。除非特殊要求, 一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。
目前该版本是官方主要更新维护的版本。最新版本:3.2.1(2017年3月20日) - jquery-xxx.js和jquery-xxx.min.js文件的区别
- jquery-xxx.js :开发版本,给程序员看的,有良好的缩进和注释。文件体积稍大些
- jquery-xxx.min.js :生产版本,程序中使用,没有缩进。体积更小一些,程序加载更快
- 目前jQuery有三个大版本:
- 导入Jquery的js文件;导入min.js文件
- 使用 :本次学习使用的是最新的3.3.1版本的JQuery
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JQuery快速入门</title>
<script src="js/jquery-3.3.1.min.js"></script>
</head>
<body>
<div id="div1">div1...</div>
<div id="div2">div2...</div>
<script>
// 使用JQuery获取元素对象
var div1 = $("#div1");
var div2 = $("#div2");
alert(div1.html())
alert(div2.html())
</script>
</body>
</html>
-
Jquery对象和JS对象的区别与转换
- 获取的所有元素对象可以当作数组来使用
- JQuery对象在操作时,更加方便
- js对象和JQuery对象的方法是不通用的
- 两者之间可以相互转换
- js – > JQuery :$(js对象)
- JQuery – > js : JQuery对象[索引] 或者 JQuery对象.get(索引)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JQuery对象与js对象的转换</title>
<script src="js/jquery-3.3.1.min.js"></script>
</head>
<body>
<div id="div1">div1...</div>
<div id="div2">div2...</div>
<script>
// 1.通过js方式获取名称叫做div的所有html元素对象
var divs = document.getElementsByTagName("div");
alert(divs);
// 2.通过Jquery方式获取名称叫做div的所有html元素对象
var $divs = $("div");
alert($divs)
/*
获取的所有元素对象可以当作数组来使用
1. JQuery对象在操作时,更加方便
2. js对象和JQuery对象的方法是不通用的
3. 两者之间可以相互转换
* js -- > JQuery :$(js对象)
* JQuery -- > js : JQuery对象[索引] 或者 JQuery对象.get(索引)
*/
// JQuery的使用更加方便;改变中的内容
// 1. 改变divs中的所有div为"bbb"
for (var i=0; i<divs.length; i++){
divs[i].innerHTML = "bbb";
}
// 2.改变$divs中的所有div为"ccc"
$divs.html("ccc");
// js对象和JQuery对象可以相互转换
// 1.js --> JQuery
$(divs[0]).html("ddd");
// 2.JQuery --> js
$divs[0].innerHTML = "eee";
$divs.get(1).innerHTML = "fff";
</script>
</body>
</html>
- 选择器
- 用来删选具有相似特征的元素(标签)
- 基本语法
- 事件绑定
- 入口函数
- 样式控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>选择器之基本语法</title>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// 若将script写在head中,则此时事件直接绑定则不成功;
// 因为事件的加载顺序不同,所以需要为script添加入口函数来避免此现象
// 2.入口函数
/*// js写法
window.onload = function () {
// 1.事件绑定
// 给bt1按钮对象添加单击事件
$("#bt1").click(function () {
alert("你好");
})
}*/
/* // JQuery写法
$(function () {
// 1.事件绑定
// 给bt1按钮对象添加单击事件
$("#bt1").click(function () {
alert("你好");
})
});*/
/*
js写法与JQuery写法的区别
window.onload 只能定义一次,如果定义多次,则后面的会将前面的覆盖
$(function () {}) 可以定义多次
*/
/* function fun1() {
alert("我是fun1");
}
function fun2() {
alert("我是fun2");
}
/!*window.onload = fun1;
window.onload = fun2; // 会覆盖上面的定义值*!/
$(fun1);
$(fun2); //两次赋值都成功,没有被覆盖*/
// 3.样式控制
$(function () {
$("#div1").css("background-color", "red");
$("#div2").css("backgroundColor", "pink");
});
</script>
</head>
<body>
<div id="div1">div1...</div>
<div id="div2">div2...</div>
<button id="bt1">我是按钮</button>
<!--<script>
// 1.事件绑定
// 给bt1按钮对象添加单击事件
$("#bt1").click(function () {
alert("你好");
})
</script>-->
</body>
</html>
- 选择器的分类
- 基本选择器
- 标签选择器(元素选择器)
- 语法: $(“html标签名”) 获得所有匹配标签名的元素
- id选择器
- 语法: $("#id的属性值") 获得与指定id属性值匹配的元素
- 类选择器
- 语法: $(".class的属性值") 获得与指定的class属性值匹配的元素
- 并集选择器
- 语法: $(“选择器1,选择器2,…”) 获得多个选择器选中的所有元素
- 标签选择器(元素选择器)
- 基本选择器
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>基本选择器</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script src="../js/jquery-3.3.1.min.js"></script>
<style type="text/css">
div,span{
width: 180px;
height: 180px;
margin: 20px;
background: #9999CC;
border: #000 1px solid;
float:left;
font-size: 17px;
font-family:Roman;
}
div .mini{
width: 50px;
height: 50px;
background: #CC66FF;
border: #000 1px solid;
font-size: 12px;
font-family:Roman;
}
div .mini01{
width: 50px;
height: 50px;
background: #CC66FF;
border: #000 1px solid;
font-size: 12px;
font-family:Roman;
}
</style>
<script type="text/javascript">
//入口函数
$(function () {
// 选择器,选择相应元素,为相应按钮实现指定功能
// <input type="button" value="改变 id 为 one 的元素的背景色为 红色" id="b1"/>
$("#b1").click(function () {
$("#one").css("backgroundColor","red");
});
// <input type="button" value=" 改变元素名为 <div> 的所有元素的背景色为 红色" id="b2"/>
$("#b2").click(function () {
$("div").css("backgroundColor","pink");
});
// <input type="button" value=" 改变 class 为 mini 的所有元素的背景色为 红色" id="b3"/>
$("#b3").click(function () {
$(".mini").css("backgroundColor","blue");
});
// <input type="button" value=" 改变所有的<span>元素和 id 为 two 的元素的背景色为红色" id="b4"/>
$("#b4").click(function () {
$("#two,span").css("backgroundColor","red");
});
});
</script>
</head>
<body>
<input type="button" value="保存" class="mini" name="ok" class="mini" />
<input type="button" value="改变 id 为 one 的元素的背景色为 红色" id="b1"/>
<input type="button" value=" 改变元素名为 <div> 的所有元素的背景色为 红色" id="b2"/>
<input type="button" value=" 改变 class 为 mini 的所有元素的背景色为 红色" id="b3"/>
<input type="button" value=" 改变所有的<span>元素和 id 为 two 的元素的背景色为红色" id="b4"/>
<h1>有一种奇迹叫坚持</h1>
<h2>自信源于努力</h2>
<div id="one">
id为one
</div>
<div id="two" class="mini" >
id为two class是 mini
<div class="mini" >class是 mini</div>
</div>
<div class="one" >
class是 one
<div class="mini" >class是 mini</div>
<div class="mini" >class是 mini</div>
</div>
<div class="one" >
class是 one
<div class="mini01" >class是 mini01</div>
<div class="mini" >class是 mini</div>
</div>
<span class="spanone">class为spanone的span元素</span>
<span class="mini">class为mini的span元素</span>
<input type="text" value="zhang" id="username" name="username">
</body>
</html>
- 层级选择器
1. 后代选择器 :A中所有的B都被选中
* 语法: $("A B ") 选择A元素内部的所有B元素
2. 子选择器 :只选中A中的下一级B元素
* 语法: $("A > B ") 选择A元素内部的所有B子元素
<script type="text/javascript">
// 入口函数
$(function () {
// 层级选择器,为相应按钮添加相应点击事件,实现其功能
// <input type="button" value=" 改变 <body> 内所有 <div> 的背景色为红色" id="b1"/>
$("#b1").click(function () {
$("body div ").css("backgroundColor","red");
});
// <input type="button" value=" 改变 <body> 内子 <div> 的背景色为 红色" id="b2"/>
$("#b2").click(function () {
$("body > div ").css("backgroundColor","blue");
});
});
</script>
- 属性选择器
- 属性名称选择器
* 语法: $(“A[属性名]”) 包含指定属性的选择器 - 属性选择器
* 语法: $(“A[属性名=‘值’]”) 包含指定属性等于指定值的选择器
* 注意: 除了等于指定值,还有一下几个符号!= 属性值不等于该值,或者没有该属性值
^= 属性值以该值开始
$= 属性值以该值结束
*= 属性值中包含该值
- 属性复合选择器
* 语法: $(“A[属性名=‘值’][]…”) 包含多个属性条件的选择器
- 属性名称选择器
<script type="text/javascript">
// 入口函数
$(function () {
// 属性选择器
//<input type="button" value=" 含有属性title 的div元素背景色为红色" id="b1"/>
$("#b1").click(function () {
$("div[title]").css("backgroundColor","red");
});
// <input type="button" value=" 属性title值等于test的div元素背景色为红色" id="b2"/>
$("#b2").click(function () {
$("div[title='test']").css("backgroundColor","red");
});
// <input type="button" value=" 属性title值不等于test的div元素(没有属性title的也将被选中)背景色为红色" id="b3"/>
$("#b3").click(function () {
$("div[title!='test']").css("backgroundColor","red");
});
// <input type="button" value=" 属性title值 以te开始 的div元素背景色为红色" id="b4"/>
$("#b4").click(function () {
$("div[title^='te']").css("backgroundColor","red");
});
// <input type="button" value=" 属性title值 以est结束 的div元素背景色为红色" id="b5"/>
$("#b5").click(function () {
$("div[title$='est']").css("backgroundColor","red");
});
// <input type="button" value="属性title值 含有es的div元素背景色为红色" id="b6"/>
$("#b6").click(function () {
$("div[title*='es']").css("backgroundColor","red");
});
// <input type="button" value="选取有属性id的div元素,然后在结果中选取属性title值含有“es”的 div 元素背景色为红色" id="b7"/>
$("#b7").click(function () {
$("div[id][title*='es']").css("backgroundColor","red");
});
});
</script>
- 过滤选择器
- 首元素选择器
* 语法: :first 获得选择的元素中第一个元素 - 尾元素选择器
* 语法: :last 获得选择的元素中最后一个元素 - 非元素选择器
* 语法: :not(selector) 不包括指定内容的元素 - 偶数选择器
* 语法: :even 偶数,从0开始计数 - 奇数选择器
* 语法: :odd 奇数,从0开始计数 - 等于索引选择器
* 语法 :eq(index) 指定索引元素 - 大于索引选择器
* 语法 :gt(index) 大于指定索引元素 - 小于索引选择器
* 语法 :lt(index) 小于指定索引元素 - 标题选择器
* 语法 :header 获得标题(h1~h6)元素,固定写法
注意 前面的8种选择器均需要在冒号前指定元素的类型,而标题选择器不需要指定
- 首元素选择器
<script type="text/javascript">
// 入口函数
$(function () {
// 过滤选择器
// <input type="button" value=" 改变第一个 div 元素的背景色为 红色" id="b1"/>
$("#b1").click(function () {
$("div:first").css("backgroundColor","red");
});
// <input type="button" value=" 改变最后一个 div 元素的背景色为 红色" id="b2"/>
$("#b2").click(function () {
$("div:last").css("backgroundColor","red");
});
// <input type="button" value=" 改变class不为 one 的所有 div 元素的背景色为 红色" id="b3"/>
$("#b3").click(function () {
$("div:not(.one)").css("backgroundColor","red");
});
// <input type="button" value=" 改变索引值为偶数的 div 元素的背景色为 红色" id="b4"/>
$("#b4").click(function () {
$("div:even").css("backgroundColor","red");
});
// <input type="button" value=" 改变索引值为奇数的 div 元素的背景色为 红色" id="b5"/>
$("#b5").click(function () {
$("div:odd").css("backgroundColor","red");
});
// <input type="button" value=" 改变索引值为大于 3 的 div 元素的背景色为 红色" id="b6"/>
$("#b6").click(function () {
$("div:gt(3)").css("backgroundColor","red");
});
// <input type="button" value=" 改变索引值为等于 3 的 div 元素的背景色为 红色" id="b7"/>
$("#b7").click(function () {
$("div:eq(3)").css("backgroundColor","red");
});
// <input type="button" value=" 改变索引值为小于 3 的 div 元素的背景色为 红色" id="b8"/>
$("#b8").click(function () {
$("div:lt(3)").css("backgroundColor","red");
});
// <input type="button" value=" 改变所有的标题元素的背景色为 红色" id="b9"/>
$("#b9").click(function () {
$(":header").css("backgroundColor","red");
});
});
</script>
- 表单过滤选择器
1. 可用元素选择器
* 语法: :enabled 获得可用元素
2. 不可用元素选择器
* 语法: :disabled 获得不可用元素
3. 选中选择器
* 语法: :checked 获得单选/复选框选中的元素
4. 选中选择器
* 语法: :selected 获得下拉框选中的元素
* 注意 以上4个选择器中的冒号前均需要填写表单中的元素
<script type="text/javascript">
// 入口函数
$(function () {
//表单过滤选择器
// <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内可用 <input> 元素的值" id="b1"/>
// 选择文本输入框元素
$("#b1").click(function () {
$("input[type=text]:enabled").val("更改可用文本框的值");
});
// <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内不可用 <input> 元素的值" id="b2"/>
$("#b2").click(function () {
$("input[type=text]:disabled").val("更改不可用文本框的值");
});
// <input type="button" value=" 利用 jQuery 对象的 length 属性获取复选框选中的个数" id="b3"/>
$("#b3").click(function () {
alert($("input[type=checkbox]:checked").length);
});
// <input type="button" value=" 利用 jQuery 对象的 length 属性获取下拉框选中的个数" id="b4"/>
$("#b4").click(function () {
alert($("#job > option:selected").length);
});
});
</script>
上述选择器的学习,主要是选中指定的元素,然后能够对选中的元素进行一些操作;接下来我们便学习一些重要的操作,DOM操作
5. DOM操作(文档操作)
- 内容操作
- html() :获取/设置元素的标签体内容,如
<a><font>内容</font></a>
;操作后 --><font>内容</font>
- text() :获取/设置元素的标签体纯文本内容,如
<a><font>内容</font></a>
;操作后 -->内容
- val() :获取/设置元素的value属性值
- html() :获取/设置元素的标签体内容,如
- 不论是html()还是text(),若修改标签体内容,则除了最外层标签体不变,里面内容全部被修改。
<script>
// 入口函数
$(function () {
//内容操作
// 获取myinput 的value值
// var value = $("#myinput").val();
// alert(value);
// $("#myinput").val("李四");
// 获取mydiv的标签体内容
// var html = $("#mydiv").html();
// alert(html);
// $("#mydiv").html("<h4>获取/设置标签体内容用html方法</h4>");
// 获取mydiv文本内容
// var text = $("#mydiv").text();
// alert(text);
$("#mydiv").text("纯文本内容");
});
</script>
- 属性操作
- 通用属性操作
- attr() : 获取/设置元素的属性
- removeAttr() :删除属性
- prop() : 获取/设置元素的属性
- removeProp() :删除属性
attr和prop的区别- 如果操作的是元素的固有属性,则建议使用prop()
- 如果操作的是元素自定义的属性,则建议使用attr()
如何判断是否为固有属性?可查看w3cSchool文档,在标签中列出来的属性均是固有属性
- 通用属性操作
<script type="text/javascript">
//入口函数
$(function () {
//通用属性操作
//获取北京节点的name属性值;查看w3cSchool文档知li标签中name不是固有属性,故使用attr()
var name = $("#bj").attr("name");
// alert(name);
//设置北京节点的name属性的值为dabeijing
$("#bj").attr("name","dabeijing");
//新增北京节点的discription属性 属性值是didu
$("#bj").attr("discription","didu");
//删除北京节点的name属性并检验name属性是否存在
$("#bj").removeAttr("name");
//获得hobby的的选中状态,查看w3cSchool文档知input标签中checked标签标识是否选中,是固有属性
var checked = $("#hobby").prop("checked");
alert(checked);
});
</script>
- 对class属性的操作
- addClass() :添加class属性值
- removeClass() :删除class属性值
- toggleClass() :切换class属性值
如何切换?- toggleClass(“one”) 先判断元素对象上是否存在class=“one”;如果存在就删除这个类;若不存在,则添加这个类。
- css():也可以操作class的样式
<script type="text/javascript">
//入口函数
$(function () {
//class属性操作
//<input type="button" value="采用属性增加样式(改变id=one的样式)" id="b1"/>
$("#b1").click(function () {
$("#one").prop("class","second");
});
//<input type="button" value=" 使用addClass方法完成按钮1的功能" id="b2"/>
$("#b2").click(function () {
$("#one").addClass("second");
});
//<input type="button" value="removeClass" id="b3"/>
$("#b3").click(function () {
$("#one").removeClass("second");
});
//<input type="button" value=" 切换样式" id="b4"/>
$("#b4").click(function () {
$("#one").toggleClass("second");
});
//<input type="button" value=" 通过css()获得id为one背景颜色" id="b5"/>
$("#b5").click(function () {
var backgroundColor = $("#one").css("backgroundColor");
alert(backgroundColor);
});
//<input type="button" value=" 通过css()设置id为one背景颜色为绿色" id="b6"/>
$("#b6").click(function () {
$("#one").css("backgroundColor","green");
});
});
</script>
- 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) 将对象1添加到对象2后面,对象1与对象2是兄弟关系
-
insertBefore() :反向添加元素到元素前面
- 对象1.insertBefore(对象2) 将对象1添加到对象2前面,对象1与对象2是兄弟关系
-
<script type="text/javascript">
//入口函数
$(function () {
// CRUD的移位操作
// <input type="button" value="将反恐放置到city的后面" id="b1"/>反恐与city并非兄弟关系,所以不能使用after
$("#b1").click(function () {
//append
$("#city").append($("#fk"));
//appendTo
// $("#fk").appendTo($("#city"));
});
// <input type="button" value="将反恐放置到city的最前面" id="b2"/>
$("#b2").click(function () {
//prepend
// $("#city").prepend($("#fk"));
//prependTo
$("#fk").prependTo($("#city"));
});
// <input type="button" value="将反恐插入到天津后面" id="b3"/>反恐与天津是兄弟关系,所以使用after
$("#b3").click(function () {
//after
$("#tj").after($("#fk"));
//insertAfter
// $("#fk").insertAfter($("#tj"));
});
// <input type="button" value="将反恐插入到天津前面" id="b4"/>
$("#b4").click(function () {
//before
// $("#tj").before($("#fk"));
//insertBefore
$("#fk").insertBefore($("#tj"));
});
});
</script>
- remove() :移除元素
* 对象.remove() :将对象删除掉 - empty() :清空元素的所有后代元素
* 对象.empty() :将对象的后代元素全部清空,但是保留当前对象及其属性节点
<script type="text/javascript">
// 入口函数
$(function () {
// CRUD的删除操作
// <input type="button" value="删除<li id='bj' name='beijing'>北京</li>" id="b1"/>
$("#b1").click(function () {
$("#bj").remove();
});
// <input type="button" value="删除city所有的li节点 清空元素中的所有后代节点(不包含属性节点)" id="b2"/>
$("#b2").click(function () {
$("#city").empty();
});
});
</script>
- 案例
- 实现表格的的隔行换色
- 实现复选框的全选与全不选
- QQ表情的选择
- 多选下拉列表的左右移动
几个小案例的详细内容见此处
下一篇: jQuery基础学习