jQuery框架
什么是JS框架
JS框架也是使用JavaScript语言编写的,框架本身提供了大量的新的方法,可以简化JS代码,提高开发效率。
为什么要使用框架开发
同一段JS代码在不同的浏览器上执行效果是有差异的
- jQuery框架也是JS代码写出来的,就是一个JS文件
- 由第三方厂商做出来的,免费开源。
- 提供了大量的方法,以前需要编写多行代码的功能,现在一行代码就可以实现
- 程序员只需要编写一套代码 ,就可以无差异的运行在所有的浏览器上。
jQuery框架特点:
- 免费开源
- 轻量级框架:占用资源少,运行速度快
- 宗旨:write less do more
jQuery的导入与使用
在代码的路径下创建一个js文件夹,当中放的就是jquery的jar包与js文件,使用时,在标签script的src属性中指定jar包的位置,就可以使用jquery框架。
jQuery对象与js对象之间的转换
JQ对象本质上是JS的一个数组对象,如果使用js代码的语法获取到的js对象,就不能使用JQ对象的方法,如果想使用JQ对象的方法就需要转换成JQ对象。
语法:$(js对象)
反之JQ对象也不能使用js对象中的方法,如果想使用js对象的方法就需要转换成JS对象。
语法:JQ对象[0]或者JQ对象.get(0)
jQuery中的选择器
基本选择器
基本选择器 | 语法 |
---|---|
ID选择器 | $("#id") |
类选择器 | $(".class") |
标签选择器 | $(“标签”) |
<!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 type="text/javascript" src="js/jquery-3.3.1.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>
</head>
<body>
<input type="button" value="改变 id 为 one 的元素的背景色为 红色" id="b1"/>
<input type="button" value=" 改变元素名为 <div> 的所有元素的背景色为 红色" id="b2"/>
<input type="button" value=" 改变 class 为 mini 的所有元素的背景色为 红色" id="b3"/>
<h1>有一种奇迹叫坚持</h1>
<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>
<div id="mover">
div 动画
</div>
<span class="spanone">class为spanone的span元素</span>
<span class="mini">class为mini的span元素</span>
</body>
<script type="text/javascript">
// 1) 改变 id 为one的元素的背景色为红色
$("#b1").click(function () {
//css方法("样式名","值"),修改行内样式
$("#one").css("background-color", "red");
});
// 2) 改变元素名为 <div> 的所有元素的背景色为 红色。
$("#b2").click(function () {
/*
标签选择器,选中所有的div
jquery几乎所有的方法,都支持直接操作一个集合
*/
$("div").css("background-color", "red");
});
// 3) 改变 class 为 mini 的所有元素的背景色为 红色
$("#b3").click(function () {
//样式名可以写成:background-color,也可以写成backgroundColor
$(".mini").css("backgroundColor", "red");
});
</script>
</html>
层级选择器
层级选择器 | 语法 |
---|---|
获取A元素内部所有的B元素,B是A的子孙元素 | $(“A B”) |
获取A元素下面的所有B子元素 | $(“A>B”) |
获取A元素同级,下一个B元素 | $(“A+B”) |
获取A元素后面所有同级B元素 | $(“A~B”) |
<!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 type="text/javascript" src="js/jquery-3.3.1.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>
</head>
<body>
<input type="button" value="改变 <body> 内所有 <div> 的背景色为红色" id="b1"/>
<input type="button" value="改变 <body> 内子 <div> 的背景色为 红色" id="b2"/>
<input type="button" value="改变 id为two的下一个div兄弟元素的背景色为红色" id="b3"/>
<input type="button" value="改变id为two的后面同级兄弟div元素的背景色为红色" id="b4"/>
<h1>有一种奇迹叫坚持</h1>
<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">span</span>
</body>
<script type="text/javascript">
//1) 改变 <body> 内所有 <div> 的背景色为红色,子孙都算
$("#b1").click(function () {
$("body div").css("background-color", "red");
});
//2) 改变 <body> 内子 <div> 的背景色为 红色
$("#b2").click(function () {
$("body>div").css("background-color", "red");
});
//3) 改变 id为two的下一个div兄弟元素的背景色为红色
$("#b3").click(function () {
$("#two+div").css("background-color", "red");
});
//4) 改变id为two的后面同级兄弟div元素的背景色为红色
$("#b4").click(function () {
$("#two~div").css("background-color", "red");
});
</script>
</html>
过滤选择器
基本过滤选择器 | 语法 |
---|---|
获得选择的元素中的第一个元素 | :first |
获得选择的元素中的最后一个元素 | :last |
不包括指定内容的元素 | :not() |
偶数,从 0 开始计数 | :even |
奇数,从 0 开始计数 | :odd |
等于第几个 equals | :eq() |
大于第n个,不含第index个 | :gt() |
小于第n个,不含第index个 | :lt() |
<!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 type="text/javascript" src="js/jquery-3.3.1.js"></script>
<style type="text/css">
table {
margin: auto;
border-collapse: collapse;
width: 525px;
}
tr {
height: 30px;
text-align: center;
}
.girl {
width: 260px;
height: 260px;
border: 1px solid gray;
float: left;
}
</style>
</head>
<body>
<input type="button" value="第一行的背景色为浅灰色" id="b1"/>
<input type="button" value="最后一行的背景色为浅绿色" id="b2"/>
<input type="button" value="除第1行和最后1行的其它行背景色为浅黄色" id="b3"/>
<input type="button" value="索引值为偶数的行背景色为浅粉色" id="b4"/>
<input type="button" value="索引值为奇数的行背景色为aquamarine色" id="b5"/>
<input type="button" value="索引值大于 3 的tr元素的背景色为oldlace色" id="b6"/>
<input type="button" value="索引值等于 3 的tr元素的背景色为antiquewhite" id="b7"/>
<input type="button" value="索引值为小于 3 的tr元素背景色为yellowgreen" id="b8"/>
<hr />
<div style="width: 525px; margin: auto;">
<table border="1" align="center">
<caption><h3>学生信息列表</h3></caption>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>家庭住址</th>
<th>成绩</th>
</tr>
<tr>
<td>1001</td>
<td>孙悟空</td>
<td>男</td>
<td>72</td>
<td>花果山</td>
<td>90</td>
</tr>
<tr>
<td>1002</td>
<td>猪八戒</td>
<td>男</td>
<td>36</td>
<td>高老庄</td>
<td>78</td>
</tr>
<tr>
<td>2002</td>
<td>沙僧</td>
<td>男</td>
<td>30</td>
<td>流沙河</td>
<td>67</td>
</tr>
<tr>
<td>3000</td>
<td>唐三藏</td>
<td>男</td>
<td>26</td>
<td>东土</td>
<td>87</td>
</tr>
<tr>
<td>4000</td>
<td>白骨精</td>
<td>女</td>
<td>18</td>
<td>白骨洞</td>
<td>96</td>
</tr>
<tr>
<td>5000</td>
<td>蜘蛛精</td>
<td>女</td>
<td>17</td>
<td>盘丝洞</td>
<td>95</td>
</tr>
<tr>
<td>总成绩</td>
<td colspan="5">3045</td>
</tr>
</table>
</div>
<br />
</body>
<script type="text/javascript">
//1) 改变第一行的背景色为浅灰色
$("#b1").click(function () {
//标签选择器,过滤得到第0元素
$("tr:first").css("backgroundColor", "lightgreen");
});
//2) 改变最后一行的背景色为浅绿色
$("#b2").click(function () {
$("tr:last").css("backgroundColor", "lightgreen");
});
//3) 改变除第1行和最后1行的其它行背景色为浅黄色
$("#b3").click(function () {
$("tr:not(:first):not(:last)").css("backgroundColor", "lightgreen");
});
//4) 改变索引值为偶数的行背景色为浅粉色,下标从0开始
$("#b4").click(function () {
//注:从0开始算
$("tr:even").css("backgroundColor", "lightgreen");
});
//5) 改变索引值为奇数的行背景色为aquamarine色
$("#b5").click(function () {
$("tr:odd").css("backgroundColor", "lightgreen");
});
//6) 改变索引值大于 3 的tr元素的背景色为oldlace色
$("#b6").click(function () {
//注:从0开始
$("tr:gt(3)").css("backgroundColor", "lightgreen");
});
//7) 改变索引值等于 3 的tr元素的背景色为antiquewhite
$("#b7").click(function () {
$("tr:eq(3)").css("backgroundColor", "lightgreen");
});
//8) 改变索引值为小于 3 的tr元素背景色为yellowgreen
$("#b8").click(function () {
$("tr:lt(3)").css("backgroundColor", "lightgreen");
});
</script>
</html>
表单过滤选择器
表单属性选择器 | 语法 |
---|---|
可用 | :enabled |
不可用 | :disabled |
选中(单选radio ,多选checkbox) | :checked |
选择(下列列表<select>中的<option>) | :selected |
<!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 type="text/javascript" src="js/jquery-3.3.1.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>
</head>
<body>
<input type="button" value="val() 方法改变表单内可用文本框元素的值" id="b1" />
<input type="button" value="val() 方法改变表单内不可用 <input> 元素的值" id="b2" />
<input type="button" value="length 属性获取(单选和多选)选框选中的个数" id="b3" />
<input type="button" value="length 属性获取下拉列表选中的个数" id="b4" />
<br><br>
<input type="text" value="不可用值1" disabled="disabled">
<input type="text" value="可用值1">
<input type="text" value="不可用值2" disabled="disabled">
<input type="text" value="可用值2">
<br><br>
<input type="checkbox" name="items" value="美容">美容
<input type="checkbox" name="items" value="IT">IT
<input type="checkbox" name="items" value="金融">金融
<input type="checkbox" name="items" value="管理">管理
<br><br>
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
<br><br>
<!--multiple表示多选-->
<select name="job" id="job" multiple="multiple" size=4>
<option>程序员</option>
<option>中级程序员</option>
<option>高级程序员</option>
<option>系统分析师</option>
</select>
<select name="edu" id="edu">
<option>本科</option>
<option>博士</option>
<option>硕士</option>
<option>大专</option>
</select>
</body>
<script type="text/javascript">
//1) val() 方法改变表单内可用文本框 <input> 元素的值
$("#b1").click(function () {
//val()作用,相当于value属性,既可设置值,也可以获取值
$("input[type=text]:enabled").val("天气不错");
});
//2) val() 方法改变表单内不可用 <input> 元素的值
$("#b2").click(function () {
$("input[type=text]:disabled").val("天气不错");
});
//3) length 属性获取选框选checked中的个数
$("#b3").click(function () {
//JQ对象本质是一个数组,就可以通过length属性得到它的长度。只有单选框和复选框有checked属性
alert($("input:checked").length);
});
//4) length 属性获取下拉列表选中的个数
$("#b4").click(function () {
alert($("option:selected").length);
});
</script>
</html>
DOM操作的方法
在JS当中可以通过innerHTML,innerText,value方法来操作DOM
html()
类似于JS当中的innerHTML,修改或获取元素内部的HTML的内容,标签可以被解析到,标签起作用,参数写内容表示往此元素内容添加内容,不写参数表示获得此元素内部的内容。
text()
类似于JS当中的innerText,标签不会被解析到,会当成字符串添加到内容中,参数效果和html方法一样
val()
类似于JS中的value属性,参数写或不写就是设置或获取值
DOM操作的方法:与属性有关的方法
attr()
对元素的属性进行修改或者添加的方法,两个参数,第一个参数是属性的名字,第二个参数是需要设置的值,如果元素中没有这个属性,则会自动添加属性和对应的值,如果有此属性只会设置值,如果只传递第一个属性名的参数,则会返回一个对应属性名的值
removeAttr()
参数传递一个属性名字,删除此属性
prop()
跟attr()的方法是一样的,唯一不同点就是prop方法的第二个参数可以传递一个布尔值,如果需要设置属性的值为true或false,就用这个方法
removeProp()
跟removeAttr方法一样,如果想删除一个布尔值的属性,就会用到这个方法
总结
如果涉及到属性值是true或false,建议使用prop,编程会更方便
DOM操作的方法:与样式有关的方法
在JS中操作CSS的方法:
元素.style.样式名=样式值
- addClass:添加一个类样式,就相当于给元素加了一个class属性
- removeClass:移除一个类样式,就是删除了一个class属性的值
- toggleClass:切换类样式,如果有class属性就移除,如果没有就添加
- css:元素.css(),参数两个如元素.css(“background-color”,“green”),就是把这个元素的背景颜色改成绿色
DOM操作的方法:元素的创建和添加
使用JQ对象的方法创建和插入元素
JS中创建元素:createElement()
JS添加元素到DOM树:appendChild()
- ( " 标 签 内 容 " ) : 创 建 一 个 元 素 , 如 ("标签内容"):创建一个元素,如 ("标签内容"):创建一个元素,如(" ")
- 父元素.append(子元素),添加到最后一个元素,与JS中appendChild相同
- 子元素.appendTo(父元素),将子元素添加到父元素中
- 父元素.prepend(子元素)添加子元素到父元素中的第一个
- 子元素.prependTo(父元素),将子元素添加到父元素中
- 元素.before(元素),添加到当前元素的前面,这两个元素是兄弟关系
- 元素.after(元素),添加到当前元素的后面,这两个元素是兄弟关系
<!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 type="text/javascript" src="js/jquery-3.3.1.js"></script>
</head>
<body>
<input type="button" id="b1" value="将反恐放置到city的后面"/>
<input type="button" id="b2" value="将反恐放置到city的最前面"/>
<input type="button" id="b3" value="将反恐放在天津前面"/>
<input type="button" id="b4" value="将反恐放在天津后面"/>
<input type="button" id="b5" value="创建一个广州的节点"/>
<hr/>
<ol id="city">
<li id="bj" name="beijing">北京</li>
<li id="tj" name="tianjin">天津</li>
<li id="cq" name="chongqing">重庆</li>
</ol>
<ul id="game">
<li id="fk" name="fankong">反恐</li>
<li id="xj" name="xingji">星际</li>
</ul>
</body>
<script type="text/javascript">
//将反恐放置到city的后面
$("#b1").click(function () {
//注:append还有剪切的功能
//$("#city").append($("#fk"));
//复制的功能,克隆。主操作方是父元素
//$("#city").append($("#fk").clone());
//子元素向父元素中追加,主操作方是子元素
$("#fk").appendTo($("#city"));
});
//将反恐放置到city的最前面
$("#b2").click(function () {
//也有prependTo()这个方法
$("#city").prepend($("#fk"));
});
//将反恐放在天津前面
$("#b3").click(function () {
//两者是兄弟关系
$("#tj").before($("#fk"));
});
//将反恐放在天津后面
$("#b4").click(function () {
$("#tj").after($("#fk"));
});
//创建一个广州的节点,加到城市中:<li id="gz" name="guangzhou">广州</li>
$("#b5").click(function () {
//创建元素
//let gz = $("<li id=\"gz\" name=\"guangzhou\">广州</li>");
//$("#city").append(gz);
//直接使用字符串,append会将字符串创建成一个元素
$("#city").append("<li id=\"gz\" name=\"guangzhou\">广州</li>");
});
</script>
</html>
DOM操作方法:删除元素
- 元素.remove:自己删除自己
- 父元素.empty,父元素清空所有的子元素,父元素还在
jQuery中事件的使用
所有的事件方法都没有on,与JS不同,省略了on,事件是一个方法,括号内写匿名函数function()
事件方法 | 功能 |
---|---|
blur() | 失去焦点 |
change() | 改变事件 |
click() | 单击事件 |
dblclick() | 双击事件 |
focus() | 得到焦点 |
keydown() | 键盘按下 |
keyup() | 松开键盘 |
mouseover() | 鼠标移上 |
mouseout() | 鼠标移出 |
submit() | 表单提交 |