1.什么是jQuery
jQuery:是一个简洁的、快速的Javascript库。该库中提供了大量可以操作页面元素的工具。
目的在简化了HTML文档的遍历、事件交互处理、动画处理以及封装了Ajax。
2006年发布,最新版本为3.7.1。
2.测试jQuery库
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>初始jQuery</title>
<!-- 导入jQuery -->
<script type="text/javascript" src="jquery-3.7.1.js"></script>
<script type="text/javascript">
//$:调用jQuery库
$(document).ready(function(){
alert('Hello jQuery')
})
</script>
</head>
<body>
</body>
</html>
3.操作元素对象
元素对象的加载过程---jQuery与Dom操作元素对象的区别
1.使用源生的ES操作元素对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>初识jQuery</title>
<script type="text/javascript" src="jquery-3.7.1.js"></script>
<script type="text/javascript">
function a(){
alert("a")
}
function b(){
alert("b")
}
window.onload = a
window.onload = b
</script>
</head>
<body>
</body>
</html>
2.使用jQuery操作元素对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>初识jQuery</title>
<script type="text/javascript" src="jquery-3.7.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
alert("a")
})
$(document).ready(function(){
alert("b")
})
</script>
</head>
<body>
</body>
</html>
4.对于事件的操作
1.ES中挂事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>初识jQuery</title>
<script type="text/javascript" src="jquery-3.7.1.js"></script>
<script type="text/javascript">
function clickMe(){
alert("点我了")
}
</script>
</head>
<body>
<p onclick="clickMe()">点击我</p>
</body>
</html>
2.使用jQuery挂事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>初识jQuery</title>
<script type="text/javascript" src="jquery-3.7.1.js"></script>
</head>
<body>
<p class="demo">点击我jQuery</p>
<script>
$(".demo").click(function(){
alert("点我了jQuery")
})
</script>
</body>
</html>
5.导航栏
1.导航菜单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>导航栏</title>
</head>
<body>
<div class="box">
<ul class="menu">
<li class="level1">
<a href="#none">衬衫</a>
<ul class="level2">
<li><a href="#none">短袖衬衫</a></li>
<li><a href="#none">长袖衬衫</a></li>
<li><a href="#none">短袖T恤</a></li>
<li><a href="#none">长袖T恤</a></li>
</ul>
</li>
<li class="level1">
<a href="#none">卫衣</a>
<ul class="level2">
<li><a href="#none">开襟卫衣</a></li>
<li><a href="#none">套头卫衣</a></li>
<li><a href="#none">运动卫衣</a></li>
<li><a href="#none">童装卫衣</a></li>
</ul>
</li>
<li class="level1">
<a href="#none">裤子</a>
<ul class="level2">
<li><a href="#none">短裤</a></li>
<li><a href="#none">休闲裤</a></li>
<li><a href="#none">牛仔裤</a></li>
<li><a href="#none">免烫卡其裤</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
2. CSS样式代码
<style>
body{
margin: 0;
padding: 0 0 12px 0;
font-size: 12px;
line-height: 22px;
background: #fff;
}
ul,li{
margin: 0;
padding: 0;
list-style-type: none;/*设置列表项无默认格式*/
}
a{
color: #00007F;
text-decoration: none;/*设置超链接文本无下划线*/
}
a:hover{
color: #bd0a01;
text-decoration: underline;/*设置超链接文本,划入时有下划线*/
}
.box{
width: 150px;
margin: 0 auto;
}
.menu{
overflow: hidden;/*隐藏溢出的部分*/
border-color: #C4D5DF;
border-style: solid;
border:0 1px 1px 1px;
}
.menu li.level1 a{
display: block;/*块级元素,独占一行*/
height: 28px;
line-height: 28px;
background: #ebf3f8;
font-weight: 700;
color:#5893B7;
text-indent: 14px;/*文本缩进*/
border-top: 1px solid #C4D5DF;
}
.menu li.level1 a:hover{
text-decoration: none;
}
.menu li.level1 a.current{
background: #B1D7EF;
}
.menu li ul{
overflow: hidden;
}
.menu li ul.level2{
display: block;
}
.menu li ul.level2 li a{
display: block;/*设置块级元素*/
height: 28px;
line-height: 28px;
background: #fff;
font-weight: 400;
color:#42556B;
text-indent: 18px;
border-top: 0px solid #fff;
overflow: hidden;
}
.menu li ul.level2 li a:hover{
color:#f60;
}
</style>
3. 菜单展开和折叠功能
用jQuery编写,实现多级菜单的展开和折叠功能。
当点击一个<a>
标签时,显示它的下一个兄弟<ul>
。
同时,隐藏所有其他同级<li>
中的<ul>
。
<script src="jquery-3.7.1.js"></script>
<script>
$(document).ready(function(){
//> : level1 下所包含的所有 a
$(".level1 > a").click(function(){
当前点击的元素的子元素显示,它父级的兄弟级别的子元素时a的元素的下一级隐藏
$(this).next().show().parent().siblings().children("a").next().hide()
})
})
</script>
6.操作CSS样式
CSS称为层叠样式表,默认情况下,div没有任何效果,需要css样式对其美化。
CSS中提供了大了的样式。由于css是浏览器默认支持的,所以不需要导入任何工具,可以直接在浏览器中解释执行。
1.原生JavaScript代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>操作CSS样式 - 不使用jQuery</title>
</head>
<body>
<div id="tt">CSS称为层叠样式表,默认情况下,div没有任何效果,需要css样式对其美化,在css中提供了大了的样式,
由于css是浏览器默认支持的,所以不需要导入任何工具,可以直接在浏览器中解释执行。</div>
<script>
document.getElementById("tt").style.color = "#999";
</script>
</body>
</html>
2.使用jQuery的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>操作CSS样式 - 使用jQuery</title>
<script src="jquery-3.7.1.js"></script>
</head>
<body>
<div id="tt">CSS称为层叠样式表,默认情况下,div没有任何效果,需要css样式对其美化,在css中提供了大了的样式,
由于css是浏览器默认支持的,所以不需要导入任何工具,可以直接在浏览器中解释执行。</div>
<script>
$("#tt").css("color", "#999");
</script>
</body>
</html>
7.操作表格
表格中如果每行最后一个单元格中的checkbox没有被禁用,则为红色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>操作表格</title>
<script src="jquery-3.7.1.js"></script>
<script>
$("document").ready(function(){
$("#table>tbody>tr:has(td:has(:checkbox:enabled))").css("background","red")
})
</script>
</head>
<body>
<table id="table">
<tbody>
<tr>
<td>第1行</td>
<td>第1行</td>
<td>第1行</td>
<td>第1行</td>
<td>第1行<input type="checkbox" disabled="disabled"/></td>
</tr>
<tr>
<td>第2行</td>
<td>第2行</td>
<td>第2行</td>
<td>第2行</td>
<td>第2行<input type="checkbox" /></td>
</tr>
<tr>
<td>第3行</td>
<td>第3行</td>
<td>第3行</td>
<td>第3行</td>
<td>第3行<input type="checkbox" disabled="disabled"/></td>
</tr>
<tr>
<td>第4行</td>
<td>第4行</td>
<td>第4行</td>
<td>第4行</td>
<td>第4行<input type="checkbox" /></td>
</tr>
</tbody>
</table>
</body>
</html>
8.jQuery选择器
基本选择器:
#id
:选择特定id
的元素。.class
:选择特定class
的所有元素。element
:选择特定标签名的所有元素。*
:选择所有元素。element1, #id
:选择特定标签名和特定id
的元素。
层次选择器:
ancestor descendant
:选择特定祖先元素内的所有后代元素。parent > child
:选择特定父元素的直接子元素。prev + next
:选择特定元素后面的下一个兄弟元素。prev ~ siblings
:选择特定元素后面的所有兄弟元素。
基本过滤选择器:
:first
:选择第一个元素。:last
:选择最后一个元素。:not(selector)
:选择不匹配选择器的所有元素。:even
:选择索引值为偶数的元素。:odd
:选择索引值为奇数的元素。:eq(index)
:选择索引值等于index的元素。:gt(index)
:选择索引值大于index的元素。:lt(index)
:选择索引值小于index的元素。:header
:选择所有标题元素(<h1>
到<h6>
)。:animated
:选择当前正在执行动画的所有元素。:focus
:选择当前获取焦点的所有元素。
内容过滤选择器:
:contains(text)
:选择包含特定文本的元素。:empty
:选择不包含子元素或文本的空元素。:has(selector)
:选择包含特定选择器的元素。:parent
:选择包含子元素或文本的元素。
属性选择器:
[attribute]
:选择包含特定属性的元素。[attribute=value]
:选择属性值等于特定值的元素。[attribute!=value]
:选择属性值不等于特定值的元素(没有该属性的元素也将被选中)。[attribute^=value]
:选择属性值以特定值开头的元素。[attribute$=value]
:选择属性值以特定值结尾的元素。[attribute*=value]
:选择属性值包含特定值的元素。[attribute1][attribute2=value]
,选择同时满足多个条件的元素。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style rel="stylesheet">
div,span,p {
width:140px;
height:140px;
margin:5px;
background:#aaa;
border:#000 1px solid;
float:left;
font-size:17px;
font-family:Verdana;
/*自定义字体*/
}
div.mini {
width:55px;
height:55px;
background-color: #aaa;
font-size:12px;
}
div.hide {
display:none;
}
</style>
<script type="text/javascript" src="jquery-3.7.1.js" ></script>
<script type="text/javascript" src="assist.js"></script>
<script>
$(document).ready(function(){
/*基本选择器*/
//选择id为one的元素
$("#btn1").click(function(){
$('#one').css("background","#bfa")
})
//选择class值为mini的元素
$("#btn2").click(function(){
$('.mini').css("background","#bfa")
})
//选择元素名是div的所有元素
$("#btn3").click(function(){
$('div').css("background","#bfa")
})
//选择所有元素
$("#btn4").click(function(){
$('*').css("background","#bfa")
})
//选择所有的span元素和id为two的元素
$("#btn5").click(function(){
$('span,#two').css("background","#bfa")
})
/*层次选择器*/
//选择body内所有div元素
$("#btn6").click(function(){
$('body div').css("background","#bfa")
})
//在body内,选择子元素是div的
$("#btn7").click(function(){
$('body>div').css("background","#bfa")
})
//选择所有class为one的下一个duv元素
$("#btn8").click(function(){
$('.one + div').css("background","#bfa")
})
//选择 id为two的元素后面的所有div兄弟元素
$("#btn9").click(function(){
$('#two ~ div').css("background","#bfa")
})
/*基本过滤选择器*/
//选择第一个div元素
$("#btn10").click(function(){
$('div:first').css("background","#bfa")
})
//选择最后一个div元素
$("#btn11").click(function(){
$('div:last').css("background","#bfa")
})
//选择class不为one的 所有div元素
$("#btn12").click(function(){
$('div:not(.one)').css("background","#bfa")
})
//选择索引值为偶数 的div元素
$("#btn13").click(function(){
$('div:even').css("background","#bfa")
})
//选择索引值为奇数 的div元素
$("#btn14").click(function(){
$('div:odd').css("background","#bfa")
})
//选择索引值等于3的元素
$("#btn15").click(function(){
$('div:eq(3)').css("background","#bfa")
})
//选择索引值大于3的元素
$("#btn16").click(function(){
$('div:gt(3)').css("background","#bfa")
})
//选择索引值小于3的元素
$("#btn17").click(function(){
$("div:lt(3)").css("background","#bfa")
})
//选择所有的标题元素
$("#btn18").click(function(){
$(":header").css("background","#bfa")
})
//选择当前正在执行动画的所有元素
$("#btn19").click(function(){
$(":animated").css("background","#bfa")
})
//选择当前获取焦点的所有元素
$("#btn20").click(function(){
$(":focus").css("background","#bfa")
})
/*内容过滤选择器*/
//选取含有文本“di”的div元素
$("#btn21").click(function(){
$("div:contains(di)").css("background","#bfa")
})
//选取不包含子元素(或者文本元素)的div空元素
$("#btn22").click(function(){
$("div:empty").css("background","#bfa")
})
//选取含有class为mini元素 的div元素
$("#btn23").click(function(){
$("div:has('.mini')").css("background","#bfa")
})
//选取含有子元素(或者文本元素)的div元素
$("#btn24").click(function(){
$("div:parent").css("background","#bfa")
})
/*属性选择器*/
//选取含有 属性title 的div元素
$("#btn25").click(function(){
$("div[title]").css("background","#bfa")
})
//选取 属性title值等于“test”的div元素
$("#btn26").click(function(){
$("div[title=test]").css("background","#bfa")
})
//选取 属性title值不等于“test”的div元素(没有属性title的也将被选中)
$("#btn27").click(function(){
$("div[title!=test]").css("background","#bfa")
})
//选取 属性title值 以“te”开始 的div元素
$("#btn28").click(function(){
$("div[title^=te]").css("background","#bfa")
})
//选取 属性title值 以“est”结束 的div元素
$("#btn29").click(function(){
$("div[title$=est]").css("background","#bfa")
})
//选取 属性title值 含有“es”的div元素
$("#btn30").click(function(){
$("div[title*=es]").css("background","#bfa")
})
//组合属性选择器,首先选取有属性id的div元素,然后在结果中 选取属性title值 含有“es”的元素
$("#btn31").click(function(){
$("div[id][title*=es]").css("background","#bfa")
})
})
</script>
</head>
<body>
<h3>基本选择器.</h3>
<input type="button" value="选择 id为 one 的元素." id="btn1"/>
<input type="button" value="选择 class 为 mini 的所有元素." id="btn2"/>
<input type="button" value="选择 元素名是 div 的所有元素." id="btn3"/>
<input type="button" value="选择 所有的元素." id="btn4"/>
<input type="button" value="选择 所有的span元素和id为two的元素." id="btn5"/>
<h3>层次选择器.</h3>
<input type="button" value="选择 body内的所有div元素." id="btn6"/>
<input type="button" value="在body内,选择子元素是div的。" id="btn7"/>
<input type="button" value="选择 所有class为one 的下一个div元素." id="btn8"/>
<input type="button" value="选择 id为two的元素后面的所有div兄弟元素." id="btn9"/>
<h3>基本过滤选择器.</h3>
<input type="button" value="选择第一个div元素." id="btn10"/>
<input type="button" value="选择最后一个div元素." id="btn11"/>
<input type="button" value="选择class不为one的 所有div元素." id="btn12"/>
<input type="button" value="选择索引值为偶数 的div元素." id="btn13"/>
<input type="button" value="选择索引值为奇数 的div元素." id="btn14"/>
<input type="button" value="选择索引值等于3的元素." id="btn15"/>
<input type="button" value="选择索引值大于3的元素." id="btn16"/>
<input type="button" value="选择索引值小于3的元素." id="btn17"/>
<input type="button" value="选择所有的标题元素." id="btn18"/>
<input type="button" value="选择当前正在执行动画的所有元素." id="btn19"/>
<input type="button" value="选择当前获取焦点的所有元素." id="btn20"/>
<h3>内容过滤选择器.</h3>
<input type="button" value="选取含有文本“di”的div元素." id="btn21"/>
<input type="button" value="选取不包含子元素(或者文本元素)的div空元素." id="btn22"/>
<input type="button" value="选取含有class为mini元素 的div元素." id="btn23"/>
<input type="button" value="选取含有子元素(或者文本元素)的div元素." id="btn24"/>
<h3>可见性过滤选择器.</h3>
<input type="button" value="选取所有不可见的元素.包括input type=hidden和divstyle=display:none;"id="btn_hidden"/>
<h3> 属性选择器.</h3>
<input type="button" value="选取含有 属性title 的div元素." id="btn25"/>
<input type="button" value="选取 属性title值等于“test”的div元素." id="btn26"/>
<input type="button" value="选取 属性title值不等于“test”的div元素(没有属性title的也将被选中)." id="btn27"/>
<input type="button" value="选取 属性title值 以“te”开始 的div元素." id="btn28"/>
<input type="button" value="选取 属性title值 以“est”结束 的div元素." id="btn29"/>
<input type="button" value="选取 属性title值 含有“es”的div元素." id="btn30"/>
<input type="button" value="组合属性选择器,首先选取有属性id的div元素,然后在结果中 选取属性title值 含有“es”的元素." id="btn31"/>
<br /><br />
<!-- 测试的元素 -->
<div class="one" id="one" >
id为one,class为one的div
<div class="mini">class为mini</div>
</div>
<div class="one" id="two" title="test" >
id为two,class为one,title为test的div.
<div class="mini" title="other">class为mini,title为other</div>
<div class="mini" title="test">class为mini,title为test</div>
</div>
<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini"></div>
</div>
<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini" title="tesst">class为mini,title为tesst</div>
</div>
<div style="display:none;" class="none">
style的display为"none"的div
</div>
<div class="hide">class为"hide"的div</div>
<div>
包含input的type为"hidden"的div<input type="hidden" size="8"/>
</div>
</body>
</html>
9. 操作元素节点
1. 获取元素
获取<p>
标签:var $para = $("p")
获取第二个<li>
元素:var $li = $("ul li:eq(1)")
2. 获取属性和文本
获取<p>
的title
属性:var p_txt = $para.attr("title")
获取<li>
的文本内容:var li_txt = $li.text()
3. 创建和插入元素
创建<li>
元素并追加到<ul>
中:
var $li_1 = $("<li title='西瓜'>西瓜</li>");
var $li_2 = $("<li title='菠萝'>菠萝</li>");
var $parent = $("ul");
$parent.append($li_1).append($li_2);
插入元素到第一位:$parent.prepend($("<li title='葡萄'>葡萄</li>"))
在指定位置插入元素:$("<li title='芒果'>芒果</li>").insertAfter($("ul li:eq(1)"));
4. 删除和清空元素
删除第二个<li>
元素:$("ul li:eq(1)").remove();
清空第二个<li>
的内容:$("ul li:eq(1)").empty();
5. 复制节点
点击<li>
时复制并追加到<ul>
中:$(this).clone(true).appendTo("ul");
6. 替换节点
替换<p>
标签为<strong>
:$("<strong>风吹雨成花</strong>").replaceAll("p");
7. 包裹节点
将<strong>
包裹在<i>
标签中:$("strong").wrap("<i></i>");
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>操作元素节点</title>
<script src="jquery-3.7.1.js"></script>
</head>
<body>
<p title="选择你最喜欢的水果">选择你最喜欢的水果</p>
<script>
$(function(){
// 获取p节点
var $para = $("p")
//获取第二个li元素
var $li = $("ul li:eq(1)")
//获取p元素的属性
var p_txt = $para.attr("title")
alert(p_txt)
//获取li元素值
var li_txt = $li.text()
alert(li_txt)
//创建li元素
var $li_1 = $("<li title='西瓜'>西瓜</li>")
var $li_2 = $("<li title='菠萝'>菠萝</li>")
//创建ul元素
var $parent = $("ul")//document.createElement("ul")
$parent.append($li_1)
$parent.append($li_2)
//插入元素至第一位
var $li_3 = $("<li title='葡萄'>葡萄</li>")
$parent.prepend($li_3)
//插入元素
var $two_li = $("ul li:eq(1)")
var $li_4 = $("<li title='芒果'>芒果</li>")
$li_4.insertAfter($two_li)
//删除元素
var $li_remove = $("ul li:eq(1)").remove()
$li_remove.appendTo("ul")
//删除title不等于菠萝的元素
// $("ul li").remove("li[title!=菠萝]")
//清空元素中的内容
$("ul li:eq(1)").empty()
//复制节点
$("ul li").click(function(){
$(this).clone(true).appendTo("ul")
})
//替换节点
// $("p").replaceWith("<strong>风吹雨成花</strong>")
$("<strong>风吹雨成花</strong>").replaceAll("p")
//包裹节点
$("strong").wrap("<i></i>")
})
</script>
<ul>
<li title="苹果">苹果</li>
<li title="香蕉">香蕉</li>
<li title="鸭梨">鸭梨</li>
</ul>
</body>
</html>