介绍
jQuery是一个javascript库,核心理念是write less,do more(写得更少,做得更多),他内部帮我们把几乎所有功能都做了封装,相比上一节基于DOM、BOM操作会更加简单。
例如:根据ID选择标签
// DOM 选择
document.getElementById('item');
// jQuery 选择
$('#item');
快速应用
在使用jQuery时,需要提前下载并应用jQuery之后,才能在代码中使用。
下载jQuery http://jquery.com/download/
应用jQuery
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
<title>jQuery学习</title>
<style>
</style>
</head>
<body>
<div id="item">Hello world
<div>我是item的子标签</div>
</div>
<!--导入jQuery-->
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
// 获取标签文本内容
var tar = $('#item').text(); // 如果需要修改内容,在text()里添加即可
alert(tar)
</script>
</body>
</html>

DOM对象和jQuery对象
DOM对象和jQuery对象都为标签提供了各种各种功能,并且两者之间可以进行相互转换。
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
<title>jQuery学习</title>
<style>
</style>
</head>
<body>
<div id="content">
Hello world
</div>
<!--导入jQuery-->
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
// Dom对象转换jQuery对象:$(dom对象)
var D_Q = $(document.getElementById('content'));
// jQuery对象转换成Dom对象:jQuery对象[0]
var Q_D = $('#content')[0];
console.log('D-Q',D_Q);
console.log('Q-D',Q_D)
</script>
</body>
</html>
选择器
id选择器
HTML代码:
<div id="content">Hello World</div>
jQuery代码:
$('#content)
class选择器
HTML代码:
<div class="wrong-poem">Hello World</div> <div class="poem">昨夜雨疏风骤,浓睡不消残酒。</div> <div class="poem">试问卷帘人,却道海棠依旧。</div> <div class="poem">知否,知否?</div> <div class="poem">应是绿肥红瘦。</div>
jQuery代码:
$('.poem')
运行
<script type="text/javascript">
var tar = $('.poem');
console.log(tar);
for (var i=0;i<tar.length;i++){
console.log(tar[i])
}
</script>
结果

标签选择器
HTML代码:
<div>div标签</div> <span>span标签</span>
jQuery代码:
$('div')
结果

多选选择器
HTML代码:
<div>2</div> <span>1</span> <p>3</p>
jQuery代码:
$('span,div,p')
结果

层叠选择器
HTML代码:
<div class="out">
<div>我是内部div</div>
<div>我也是</div>
</div>
jQuery代码:
$('.out div')
结果

属性选择器
HTML代码:
<input type="radio" name="gender" value="0"> <input type="radio" name="gender" value="1"> <input type="checkbox" name="hobby" value="1">
jQuery代码:
$('input[name="gender"]')
结果

表单选择器
HTML代码:
<form>
<input type="button" value="Input Button"/>
<input type="checkbox" />
<input type="file" />
<input type="hidden" />
<input type="image" />
<input type="password" />
<input type="radio" />
<input type="reset" />
<input type="submit" />
<input type="text" />
<select>
<option>Option</option>
</select>
<textarea> </textarea>
<button>Button</button>
</form>
jQuery代码:
$(":text") // 找到所有input标签
// $(":input") 找到所有input标签
// $(":password") 找到所有input且type=password的标签
// $(":radio") 找到所有input且type=radio的标签
// $(":checkbox") 找到所有input且type=checkbox的标签
结果

筛选器
筛选器一般用于对选择器选中的标签进行再次筛选。
parent 父标签
HTML代码:
<div class="body">
<p>p1</p>
<p>p2</p>
</div
jQuery代码:
$('p').parent()
结果

children 所有子标签
children('a') 可以传入值
HTML代码:
<div class="outside">
<div class="inside">
<p>p标签</p>
</div>
</div>
jQuery代码:
$('.outside').children()
结果

next 下一个兄弟标签
HTML代码:
<div class="first"></div> <div class="second"></div> <div class="third"></div>
jQuery代码:
$('.first').next()
结果

prev 上一个兄弟标签
HTML代码:
<div class="first"></div> <div class="second"></div> <div class="third"></div>
jQuery代码:
$('.second').prev()
结果

siblings 所有兄弟标签
HTML代码:
<div>
<div class="all-siblings"></div>
<div class="first"></div>
<div class="second"></div>
<div class="third"></div>
</div>
jQuery代码:
$('.all-siblings').siblings()
结果

find 子孙中查找标签
HTML代码:
<div>
<p>
<span>
<a>
<img src="">
</a>
</span>
</p>
</div>
jQuery代码:
$('div').find('img')
结果

first 匹配的第一个标签
HTML代码:
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
jQuery代码:
$('ul li').first()
结果

last 匹配的最后一个标签
HTML代码:
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
jQuery代码:
$('ul li').last()
结果

属性
增删样式
addClass 增加样式
removeClass 删除样式
HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
<title>jQuery学习</title>
<style>
.old {
width: 100px;
height: 100px;
background-color: #ff6700;
}
.new {
width: 500px;
height: 500px;
background-color: green;
}
.hide{
display: none;
}
</style>
</head>
<body>
<div class="old hide"></div>
</body>
</html>
HTML代码:
var tar = $('.old');
tar.addClass('new'); // 增加
tar.removeClass('hide') // 删除
html、text文本
HTML代码:
<div class="item1">
<a>百度</a>
</div>
<div class="item2">
</div>
jQuery代码:
取值时
html 取标签
text 取文本
// 取值
var tar = $('.item1');
tar.html(); // <a>百度</a>
tar.text(); // 百度
设值时
html 创建的标签可以识别
set_ele.html('<a href="#">html一下</a>')

text 创建的标签不能被识别
set_ele.text('<a href="#">text一下</a>')

val 值
HTML代码:
<input type="text" id="username">
<input type="radio" class="a1" name="gender" value="1">男
<input type="radio" class="a1" name="gender" value="0">女
<input type="checkbox" class="a2" name="hobby" value="1">篮球
<input type="checkbox" class="a2" name="hobby" value="2">足球
<input type="checkbox" class="a2" name="hobby" value="3">羽毛球
<select name="city" id="s1">
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">深圳</option>
</select>
<select name="lover" id="s2" multiple>
<option value="1">波多</option>
<option value="2">苍井</option>
<option value="3">小泽</option>
</select>
jQuery代码:
获取值:
文本输入框:$('#username').val();
单选radio框:$('.a1:checked').val();
多选checkout框:$('.a2:checked').val()是不行的;需要循环取值,如下:
var d = $(':checkbox:checked');
for (var i=0;i<d.length;i++){
console.log(d.eq(i).val());
}
单选select框:$('#city').val();
多选select框:$('#lover').val();
设置值:
文本输入框:$('#username').val('you are my love');
单选radio框:$('.a1').val([2]); #注意里面必须是列表,写的是value属性对应的值
多选checkout框:$('.a2').val(['2','3'])
单选select框:$('#city').val('1');
多选select框:$('#lover').val(['2','3'])
实例
模态框添加和编辑功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Study</title>
<style>
table{
border-collapse: collapse;
margin-bottom: 5px;
}
table th,td{
border: #b0b0b0 2px solid;
padding: 5px;
}
.cover {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: black;
opacity: 0.7;
}
.login{
text-align: center;
width: 300px;
height: 300px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
background-color: white;
}
.login div{
margin-bottom: 20px;
}
.hide{
display: none;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>#</th>
<th>姓名</th>
<th>爱好</th>
<th>操作</th>
<th>工资</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="id"></td>
<td>小明</td>
<td>做数学</td>
<td><input class="expel" type="button" value="开除"></td>
<td>100</td>
</tr>
<tr>
<td><input type="checkbox" name="id"></td>
<td>小红</td>
<td>爱小明</td>
<td><input class="expel" type="button" value="开除"></td>
<td>10</td>
</tr>
<tr>
<td><input type="checkbox" name="id"></td>
<td>小军</td>
<td>揍小明</td>
<td><input class="expel" type="button" value="开除"></td>
<td>1</td>
</tr>
</tbody>
</table>
<button id="add_user">添加新用户</button>
<div class="cover hide"></div>
<div class="login hide">
<h3>用户添加界面</h3>
<div>姓名<input class="name" type="text"></div>
<div>爱好<input class="hobby" type="text"></div>
<div>工资<input class="money" type="text" value="1"></div>
<input class="login-submit" type="button" value="提交">
<input class="login-reset" type="button" value="取消">
</div>
<script type="text/javascript" src="../js/jquery.js"></script>
<script>
// 删除
$('table').on('click','.expel',function () {
var status = $('td input[name="id"]:checked'); // 返回选中的对象
// 批量删除
if (status.length!==0){
for (var i=0;i<status.length;i++){
var tar = $(status[i]).parent().parent();
tar.remove()
}
}
// 没有批量,删单个
else{
($(this).parent().parent().remove());
}
});
// 添加用户
$('#add_user').on('click',function () {
// 清空以前的数据,移除遮挡
$('.login div input').val('');
$('.cover,.login').removeClass('hide')
});
// 确认添加
$('.login-submit').on('click',function () {
var name = $('.login .name').val();
var hobby = $('.login .hobby').val();
var expel = '<input class="expel" type="button" value="开除">';
var money = $('.login .money').val();
var tr_ele = document.createElement('tr'); // 创建新元素
// 给新元素,添加子元素,必须查找后才能才能使用append
$(tr_ele).append('<td><input type="checkbox" name="id"></td>');
$(tr_ele).append('<td>'+ name +'</td>');
$(tr_ele).append('<td>'+ hobby + '</td>');
$(tr_ele).append('<td>'+ expel +'</td>');
// 不同不是添加
var td_ele = document.createElement('td');
td_ele.innerHTML = money;
$(tr_ele).append(td_ele);
// 添加到表单中
$('table tbody').append(tr_ele);
// 恢复遮挡
$('.cover,.login').addClass('hide')
});
// 取消添加
$('.login-reset').on('click', function () {
// 恢复遮挡
$('.cover,.login').addClass('hide')
})
</script>
</body>
</html>
prop 属性值
HTML代码:
<input type="radio" name="gender" value="1">男 <input type="radio" name="gender" value="0">女
jQuery代码:
$(':radio').prop('checked')
结果
false
实例
全选、取消、反选。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery学习</title>
<style>
</style>
</head>
<body>
<input type="checkbox" name="hobby">篮球
<input type="checkbox" name="hobby">足球
<input type="checkbox" name="hobby">羽毛球
<div>
<button class="get-all">全选</button>
<button class="lose-all">取消</button>
<button class="negation">反选</button>
</div>
<script src="../js/jquery.js"></script>
<script>
// 全选
$('.get-all').on('click',function () {
$(':checkbox').prop('checked',true);
});
// 取消
$('.lose-all').on('click',function (){
$(':checkbox').prop('checked',false)
});
//反选
$('.negation').on('click',function () {
var tar = $(':checkbox');
for (var i=0;i<tar.length;i++){
// tar[i].checked = !tar[i].checked 第一种
$(tar[i]).prop('checked',!tar[i].checked) // 第二种,记得前面加$,这样才有prop方法
}
})
</script>
</body>
</html>
文档处理
append 内部插入
被选元素内部后插入
HTML代码:
<div class="out">
<div>内部div</div>
</div>
jQuery代码:
$('.out').append('<p>来喽来喽</p>')
结果

prepend 内部插入
被选元素内部前插入
HTML代码:
<div class="out">
<div>内部div</div>
</div>
jQuery代码:
$('.out').prepend('<p>来喽来喽</p>')
结果

after 外部插入
被选元素外部后插入
HTML代码:
<div class="out">
<div>内部div</div>
</div>
jQuery代码:
$('.out').after('<div>新的div</div>')
结果

before 外部插入
HTML代码:
<div class="out">
<div>内部div</div>
</div>
jQuery代码:
$('.out').before('<div>新的div</div>')
结果

empty 删除被选标签内部的标签
被选中的标签会存在
HTML代码:
<div class="out">
<div>内部div</div>
<span>内部span</span>
</div>
jQuery代码:
$('.out').empty()
结果
remove 删除标签
被选中的标签不会存在
HTML代码:
<div class="out">
<div>内部div</div>
<span>内部span</span>
</div>
jQuery代码:
$('.out').remove()
事件
jQuery绑定事件
HTML代码:
<ul>
让他们变绿
<li>小明</li>
<li>小红</li>
<li>小军</li>
</ul>
jQuery代码:
// 鼠标按下
$('li').on('mousedown',function () {
this.style.color = 'green'
});
// 鼠标抬起
$('li').on('mouseup',function () {
this.style.color = 'black';
var name = $(this).text();
$(this).text(name + ':我不想变绿了')
});
实例
左侧菜单切换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery学习</title>
<style>
body{margin: 0;}
.menu{
width: 200px;
background-color: #b0b0b0;
}
.menu .title{
background-color: #ff6700;
font-size: 15px;
cursor: pointer;
}
.menu .title .item{
background-color: greenyellow;
padding: 0 5px;
cursor: pointer;
}
.menu .title .item:hover{
color: white;
background-color: green;
}
.hide{
display: none;
}
</style>
</head>
<body>
<div class="menu">
<div class="title">选择1
<div class="item hide">item</div>
<div class="item hide">item</div>
<div class="item hide">item</div>
</div>
<div class="title">选择2
<div class="item hide">item</div>
<div class="item hide">item</div>
<div class="item hide">item</div>
</div>
<div class="title">选择3
<div class="item hide">item</div>
<div class="item hide">item</div>
<div class="item hide">item</div>
</div>
</div>
<script src="../js/jquery.js"></script>
<script>
$('.title').click(function () {
// 判断item标签是否有hide
var status = $(this).children('.item').is('.hide');
// 全部添加hide
$('.title .item').addClass('hide');
//有的话打开
if (status){
$(this).children().removeClass('hide')
}
});
</script>
</body>
</html>
jQuery更多事件
使用方法和click都是类似的,事件列表如下:

jQuery事件委托
jQuery的事件绑定是在页面加载完毕之后,找到相关标签并为其绑定事件,如果后期通过js代码有新增表现,那么新标签中模式是没有事件的,如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery学习</title>
<style>
</style>
</head>
<body>
<ul>
让他们变绿
<li>小明</li>
<li>小红</li>
<li>小军</li>
</ul>
<div>
<input type="text">
</div>
<button class="new_user">新增</button>
<script src="../js/jquery.js"></script>
<script>
// 鼠标悬停
$('li').mousemove(function () {
this.style.color = 'green'
});
// 鼠标离开
$('li').mouseleave(function () {
this.style.color = 'black';
var name = $(this).text();
$(this).text(name + ':我不想变绿了')
});
// 新增按钮
$('.new_user').click(function () {
var name = $('div :text').val();
if (name.trim()!==''){
$('ul').append('<li>'+ name +'</li>')
}
})
</script>
</body>
</html>
为了避免类似这种情况的发生,jQuery中引入了事件委托的概念,只需要基于on进行绑定即可:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery学习</title>
<style>
</style>
</head>
<body>
<ul>
让他们变绿
<li>小明</li>
<li>小红</li>
<li>小军</li>
</ul>
<div>
<input type="text">
</div>
<button class="new_user">新增</button>
<script src="../js/jquery.js"></script>
<script>
// 鼠标悬停
$('ul').on('mousemove','li',function () {
this.style.color = 'green'
});
// 鼠标离开
$('ul').on('mouseleave','li',function () {
this.style.color = 'black';
var name = $(this).text();
$(this).text(name + ':我不想变绿了')
});
// 新增按钮
$('.new_user').click(function () {
var name = $('div :text').val();
if (name.trim()!==''){
$('ul').append('<li>'+ name +'</li>')
}
})
</script>
</body>
</html>
更多
on方法
语法:$(selector).on(event,childSelector,data,function)
| event | 必需。规定要从被选元素移除的一个或多个事件或命名空间。 由空格分隔多个事件值,也可以是数组。必须是有效的事件。 |
| childSelector | 可选。规定只能添加到指定的子元素上的事件处理程序(且不是选择器本身,比如已废弃的 delegate() 方法)。 |
| data | 可选。规定传递到函数的额外数据。 |
| function | 可选。规定当事件发生时运行的函数。 |
$('ul').on('click','li',function () {
this.style.color = 'green'
});
off方法
语法:$(selector).off(event,selector,function(eventObj),map)
| event | 必需。规定要从被选元素移除的一个或多个事件或命名空间。 由空格分隔多个事件值。必须是有效的事件。 |
| selector | 可选。规定添加事件处理程序时最初传递给 on() 方法的选择器。 |
| function(eventObj) | 可选。规定当事件发生时运行的函数。 |
| map | 规定事件映射 ({event:function, event:function, ...}),包含要添加到元素的一个或多个事件,以及当事件发生时运行的函数。 |
$("button").click(function(){
$("p").off("click");
});
is方法
语法:$(selector).is(selectorElement,function(index,element))
| selectorElement | 必须。选择器表达式,根据选择器/元素/jQuery 对象检查匹配元素集合,如果存在至少一个匹配元素,则返回 true,否则返回 false |
| function(index,element) |
可选。指定了选择元素组要执行的函数。
|
$(div).is('item')
Ajax
ajax作用:通过JavaScript代码向网络上的地址发送异步请求。
为了本地测试方便,我们通过ajax向本地json文件发送请求并获取数据。
student_info.json
[
{'id':'1','name':'小明','gender':'male'},
{'id':'2','name':'小红','gender':'female'},
{'id':'3','name':'小军','gender':'male'},
]
基本代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery学习</title>
</head>
<body>
<input type="button" id="btn" value="获取数据">
<script src="../js/jquery.js"></script>
<script type="text/javascript">
$(function () {
$('#btn').click(function () {
$.ajax({
type: 'GET',
// 也可以向网络地址 http://www.xxxx.com 发送请求。
url: '../json/student_info.json',
success: function (arg) {
console.log(arg);
}
})
});
})
</script>
</body>
</html>
实例
基于ajax实现数据管理
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery学习</title>
<style>
table{
border-collapse: collapse;
}
table th,td{
border: #b0b0b0 1px solid;
text-align: center;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<input class="getData" type="button" value="加载内容">
<script src="../js/jquery.js"></script>
<script>
$('.getData').click(function () {
$.ajax({
// 请求类型
type:'get',
// 也可以向网络地址 http://www.xxxx.com 发送请求。
url:'../json/student_info.json',
// 成功后
success:function (arg) {
for(var i in arg){
var id = '<td>'+arg[i]["id"]+'</td>';
var name = '<td>'+arg[i]["name"]+'</td>';
var gender = '<td>'+arg[i]["gender"]+'</td>';
$('tbody').append('<tr>'+id+name+gender+'</tr>')
}
}
})
})
</script>
</body>
</html>
来源:https://www.cnblogs.com/py-peng/p/12356289.html