jQuery 使用户能更方便地处理 HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供 AJAX 交互。 jQuery 的语法设计可以使开发者更加便捷,例如操作文档对象、选择 DOM 元素、制作动画效果、事件处理、使用 AJAX 以及其他功能。
jQuery1.x.js:jQuery 源文件;学习 jQuery 或者 debug 的时候使用。 jQuery1.x.min.js:jQuery 压缩之后的文件;正常项目中使用
把 jQuery-1.11 文件夹拷贝到项目的 webapp 下的 static 目录下。
新建 webapp/jq_01/01.jQuery_hello.html,在文件中引入 jQuery
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery 入门</title>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js"></script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery 入门</title>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js"></script>
<script>
alert($);
</script>
</head>
<body>
</body>
</html>
若控制台出现 ReferenceError:$ is not defined 这样的错误,证明引入 jQuery 失败
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery 入门title>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js">script>
<script>
// 使用原生JS
/*
window.onload = function () {
var btn = document.getElementById("toggle");
var temp;
btn.onclick = function () {
var div = document.getElementById("content");
var content = div.innerHTML;
if(content){ // 当显示, 改成隐藏
temp = content; // 存起内容
div.innerHTML = ''; // 清除内容
}else { // 当隐藏, 改成显示
div.innerHTML = temp;
}
}
}*/
// 使用 jQuery
$(function () {
$('#toggle').click(function () {
$('#content').toggle(3000);
});
});
script>
head>
<body>
<div id="content">
【乘客#为少付1元车费致两公交相撞#:辱骂并拉拽驾驶员使公交车失控】5月7日16时18分,浙江宁波
一男性乘客因不愿按规定缴纳车费,辱骂并强行拉拽驾驶员胳膊,致使正常行使中的公交车失控,穿过中间绿
化带与对向行驶的公交车相撞。事故造成2名驾驶员和该肇事乘客受伤,无人员死亡。
div>
<button id="toggle">切换button>
body>
html>
通过 document.getElementById() 找到的元素和通过 $() 找不到元素不一样:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery_Object_vs_DOM_Objecttitle>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js">script>
<script>
console.log($ === jQuery); // 都是一个函数
window.onload = function () {
var btn = document.getElementById("btn");
console.log(btn); // btn 变量存的就是 DOM 对象
var $btn = $('#btn'); // 找页面元素 jQuery
console.log($btn);
// DOM 对象转成 jQuery 对象
console.log($(btn));
// jQuery 对象转成 DOM 对象,这个很少用
console.log($btn.get(0));
// 以后尽量使用 jQuery 方法操作页面元素,绑定事件等等.
}
script>
head>
<body>
<button id="btn">按钮button>
body>
html>
新建 webapp/jq_01/02.jQuery_Object_vs_DOM_Object.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery_Object_vs_DOM_Objecttitle>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js">script>
<script>
console.log($ === jQuery); // 都是一个函数
script>
head>
<body>
body>
html>
新建 webapp/jq_01/03.normal_method.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery 常用方法title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
head>
<body>
<h1 id="h1">做人<i>要低调i>h1>
<input type="text" id="username" value="zs"/><br/><br/>
<div>
jQuery 常用方法:<br/>
jQuery对象.size(); // 获取 jQuery 中包含元素的个数<br/>
jQuery对象.val(); // 操作元素的 value 属性<br/>
jQuery对象.html(); // 操作元素内的 HTML 代码<br/>
jQuery对象.text(); // 操作元素内的文本,忽略 HTML 标签<br/>
jQuery对象.css(); // 操作元素的 style 属性
div>
<hr/>
<div>
<p>
问题 1:获取 jQuery 中包含 DOM 的个数,比如获取页面上 p 元素的个数
p>
<p>
问题 2:获取 id 为 username 元素的 value 属性值
p>
<p>
问题 3:设置 id 为 username 元素的 value 属性值为"叩丁狼教育"
p>
<p>
问题 4:对比 h1 元素的内容和纯文本的区别
p>
<p>
问题 5:把 h1 元素内容的颜色改为黄色
p>
div>
body>
html>
注意在上面的页面引入 jQuery 之后加入下面的代码
<script>
$(function () {
// 问题 1:获取 jQuery 中包含 DOM 的个数,比如获取页面上 p 元素的个数
console.log($('p').size());
// 问题 2:获取 id 为 username 元素的 value 属性值
console.log($('#username').val());
// 问题 3:设置 id 为 username 元素的 value 属性值为"叩丁狼教育"
var $ret = $('#username').val('叩丁狼教育');
console.log($ret); // 返回的是被修改 value 属性值的 jQuery 对象
// 问题 4:对比 h1 元素的内容和纯文本的区别
console.log($('#h1').text());
console.log($('#h1').html());
// 若我想修改这 h1 元素中内容
$('#h1').html('人生要有一点绿');
// 问题 5:把 h1 元素内容的颜色改为黄色
$('#h1') .css('color', 'green');
});
script>
jQuery 选择器是 jQuery 类库最重要功能之一,jQuery 提供获取页面元素一种语法。这些选择器的用法和 CSS 的语法非常相似,结合 jQuery 类库的方法你可以很方便快速地定位页面中任何元素,并为其添加响应的行为。
选择器一般由“特殊符号”+“字符串”组成。比如:“#”代表 id,“mydiv”是一个字符串,那么整体 #mydiv 代表的是 id 为 mydiv 的元素对象。
语法:(“选择器”) ,如 (“#mydiv”)。 注意:如果通过 jQuery 方法获取页面中元素,没有查找到,返回值不是 null,返回值为一个空数组 [],所以判断是否获取到元素,通过 jQuery.size() != 0 来判断。
jQuery 最常用,最简单选择器,通过元素的 id、class 或标签等查找元素。在网页中,每个 id 名称只能使用一次[0, 1],class 允许重复使用 [0, n]。
#id,用法:$(“#myDiv”) 返回值单个元素的组成的集合。
说明:这个就是直接选择 html 中的 id=“myDiv”。
Element,用法:$(“div”) 返回值元素集合。
说明:element 的英文翻译过来是“元素”,所以 element 其实就是 HTML 已经定义的标签元素,例如
div,input,a 等等。
class,用法:$(”.myClass“) 返回值元素集合。
说明:这个标签是直接选择 HTML 代码中 class=”myClass” 的元素或元素组(因为在同一 HTML 页面
中 class 是可以存在多个同样值的元素)。
新建 webapp/jq_01/04.normal_selector.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery 常用选择器title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
<style type="text/css"> .selected{background-color: gray;}style>
head>
<body>
<div id="msg">使用 ID 选择器获取当前 DIV元素div>
<ul>
<li>item1li>
<li>item2li>
<li>item3li>
<li>item4li>
ul>
<ul id="myul">
<li>item1li>
<li class="selected">item2li>
<li>item3li>
<li class="selected">item4li>
ul>
<hr/>
<div>
<p>
问题 1:获取 id 为 msg 的元素的内容
p>
<p>
问题 2:获取所有的 li 元素并打印数量
p>
<p>
问题 3:获取所有 class 为 selected 的元素,字体颜色改为 red
p>
div>
body>
html>
注意在上面的页面引入 jQuery 之后加入下面的代码
<script>
$(function () {
// 问题 1:获取 id 为 msg 的元素的内容
console.log($('#msg').html());
// 问题 2:获取所有的 li 元素并打印数量
console.log($('li').size());
// 问题 3:获取所有 class 为 selected 的元素,字体颜色改为 red
$('.selected').css('color', 'red'); // 找到多少改多少
console.log($('*').size());
// , 相当于或
console.log($('#msg,.selected').size());
});
script>
若想通过 DOM 元素之间的层次关系来获取特定元素,例如后代元素,子元素, 相邻元素,兄弟元素等,则需要使用层次选择器.
用法:$(“form input”)
说明:在给定的祖先元素下匹配所有后代元素。
用法:$(“form > input”)
说明:在给定的父元素下匹配所有子元素。
用法:$(”label + input“)
说明:匹配所有紧接在 prev 元素后的 next 元素。
用法:$(“form ~ input”)
说明:匹配 prev 元素之后的所有 siblings 元素。
注意:是匹配之后的元素,不包含该元素在内,并且 siblings 匹配的是和 prev 同辈的元素,其后辈元
素不被匹配。
新建 webapp/jq_01/05.hierarchy_selector.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery 层次选择器title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
<style type="text/css"> .selected{background-color: gray;}style>
head>
<body>
<ul id="myul">
<li>item1li>
<li>item2li>
<li>item3li>
<li>
<ul>
<li>item1li>
<li>item2li>
<li>item3li>
<li>item4li>
ul>
li>
ul>
<label>LABEL1label>
<input type="text" value="text1"/>
<input type="text" value="text2"/>
<br/>
<label>LABEL2label>
<input type="text" value="text3"/>
<input type="text" value="text4"/>
<br/>
<label>
LABEL3
<input type="text" value="text5"/>
<input type="text" value="text6"/>
label>
<hr/>
<div>
<p>
问题 1:获取所有 ul 下的所有 li 元素,并打印分析结果
p>
<p>
问题 2:获取 id 为 myul 下的所有子 li 元素,并打印分析结果
p>
<p>
问题 3:获取所有 label 元素后的 input 元素,并打印分析结果
p>
<p>
问题 4:获取紧跟着 label 元素后的 input 元素,并打印分析结果
p>
div>
body>
html>
注意在上面的页面引入 jQuery 之后加入下面的代码
<script>
$(function () {
// 问题 1:获取所有 ul 下的所有 li 元素,并打印分析结果
console.log($('ul li'));
// 问题 2:获取 id 为 myul 下的所有子 li 元素,并打印分析结果
console.log($('#myul > li'));
// 问题 3:获取所有 label 元素后的 input 元素,并打印分析结果
console.log($('label ~ input'));
// 问题 4:获取紧跟着 label 元素后的 input 元素,并打印分析结果
console.log($('label + input'));
});
script>
过滤选择器:通过特定的过滤规则来筛选所需要的 DOM 元素,过滤规则与 CSS 中的伪类选择器语法相同。 该选择器一般以一个冒号(:)开头,按照不同的过滤规则,可分为基本过滤,内容过滤,可见性过滤,属性过滤,子元素过滤,表单对象属性过滤选择器。
新建 webapp/jq_01/06.filter_selector.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery 过滤选择器title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
<style type="text/css"> .selected{background-color: gray;}style>
head>
<body>
<input type="hidden" name="id" value="1">
<select>
<option value="1">Flowersoption>
<option value="2" selected>Gardensoption>
<option value="3">Treesoption>
select>
<hr/>
<div>
<p>
问题 1:获取隐藏 input 的 value 属性值, 不能使用根据元素名, 也不能通过给元素加
id 属性,再通过 id 选择器找
p>
<p>
问题 2:获取选中的 option
p>
div>
body>
html>
注意在上面的页面引入 jQuery 之后加入下面的代码
<script>
$(function () {
// 问题 1:获取隐藏 input 的 value 属性值, 不能使用根据元素名, 也不能通过给元素加
id 属性,再通过 id 选择器找
console.log($('input[name=id]').val());
// 问题 2:获取选中的 option
console.log($('option:selected').val());
});
script>
<button onclick=”clickT()”>button>
btn.onCliick = function(){}
查看 jQuery 文档:jQuery对象.click(fn),页面加载事件处理,对比之前使用原生的区别,之前只能绑定一个处理函数。
新建 webapp/jq_01/07.jQuery_event_bind.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery 事件绑定title>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js">script>
<script>
$(function () {
$('#btn1').click(function () { // 匿名函数什么时候执行, 当用户在页面点击这
个按钮就会执行这个函数
console.log(this); // this 就是事件源 DOM 对象
console.log($(this)); // 事件源 DOM 对象 => jQuery 对象
});
// 找到多少个绑定多少个
$('.myBtn').click(function () {
console.log('hello');
});
});
window.onload = function () {
console.log(1);
};
window.onload = function () {
console.log(2);
};
$(function () {
console.log(3);
});
$(function () {
console.log(4);
});
script>
head>
<body>
<button id="btn1">btn1button>
<button id="btn2" class="myBtn">btn2button>
<button id="btn3" class="myBtn">btn3button>
body>
html>
给元素添加子元素,且是最小的子元素。
给元素添加弟弟元素。
empty 断子绝孙,remove 和 detach 自杀。
新建 webapp/jq_01/09.jQuery_attr.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery DOM 操作title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
head>
<body>
<span style="background-color : blue;color: red;" id="span">SPANspan>
<div id="div1" style="background-color: gray;">DIV1div>
<div id="div2" style="background-color: green;">DIV2div>
<ul id="ul">
<li>item1li>
<li>item2li>
<li>item3li>
<li>item4li>
<li>item5li>
ul>
<input id="btn" type="button" value="删除我"/>
<form>
<fieldset>
<legend>内部插入节点(插入子节点)legend>
<input type="button" value="append" id="append"/>
fieldset>
form>
<form>
<fieldset>
<legend>外部插入节点(插入兄弟节点)legend>
<input type="button" value="after" id="after"/>
fieldset>
form>
<form>
<fieldset>
<legend>删除节点legend>
<input type="button" value="删除所有子节点" id="empty"/>
<input type="button" value="删除节点" id="remove"/>
<input type="button" value="恢复节点" id="resume"/>
fieldset>
form>
body>
html>
<script>
$(function () {
$('#append').click(function () {
// 父亲加小儿子
$('#div1').append($('#span'));
});
$('#after').click(function () {
// 哥哥加弟弟
$('#div2').after($('#div1'));
});
$('#empty').click(function () {
$('#ul').empty();
});
$('#btn').click(function () {
console.log(1);
});
var $btn;
$('#remove').click(function () {
$btn = $('#btn').remove(); // 这个方法返回被删除元素
});
$('#resume').click(function () {
$('#ul').after($btn);
});
});
script>
新建 webapp/jq_01/09.jQuery_attr.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery 属性操作title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
<style type="text/css">
.other {
background-color: orange;
font-size: 20px;
}
.myBtn{
background-color: red;
}
style>
head>
<body>
<input id="btn" type="button" value="点我"/>
<form>
<fieldset>
<legend>属性操作legend>
<input type="button" value="获取属性值" id="getAttr"/>
<input type="button" value="设置属性值" id="setAttr"/>
fieldset>
form>
<form>
<fieldset>
<legend>CSS 操作legend>
<input type="button" value="添加CSS" id="addClass"/>
<input type="button" value="删除CSS" id="removeClass"/>
<input type="button" value="轮换CSS" id="toggleClass"/>
<input type="button" value="判断CSS" id="hasClass"/>
fieldset>
form>
<input type="checkbox" value="1" checked name="gender" id="gender" data-
option='{"name" : "蒋干"}'
style="color: red; background: aqua" class="myBtn other" > 男
body>
html>
<script>
$(function () {
$('#getAttr').click(function () {
console.log($('#btn').attr('type'));
});
$('#setAttr').click(function () {
$('#btn').attr('my', 'haha');
});
$('#addClass').click(function () {
$('#btn').addClass('other');
});
$('#removeClass').click(function () {
$('#btn').removeClass('other');
});
$('#toggleClass').click(function () {
$('#btn').toggleClass('other');
});
$('#hasClass').click(function () {
console.log($('#btn').hasClass('other'));
});
});
script>
<script>
$(function () {
// css 方法针对 style 属性
console.log($('#gender').css('color'));
// val 方法针对 value 属性
console.log($('#gender').val());
// addClass 方法、removeClass 方法,针对 class 属性
$('#gender').removeClass('other');
// prop 方法针对 checked 属性 selected 属性
console.log($('#gender').prop('checked'));
// $('#gender').prop('checked', false)
// data 方法,针对 data- 开头的属性的获取,若值是 JSON 格式, 自动转成 JS 对象
console.log($('#gender').data('option'));
// 其他情况使用 attr 方法
});
script>
新建 webapp/jq_01/10.echo.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>下拉框回显title>
<script src="/static/jQuery-1.11/jquery-1.11.3.min.js">script>
head>
<body>
<select id="s1">
<option value="1">选项1option>
<option value="2">选项2option>
<option value="3">选项3option>
<option value="4">选项4option>
<option value="5">选项5option>
select>
<br/>
<input type="button" value="回显第3个选项" onclick="echo();"/><br/>
body>
html>
<script>
function echo() {
// $('#s1').val("3");
$('#s1 > option:eq(2)').prop('selected', true);
}
script>
新建 webapp/jq_01/11.select.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>列表移动title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
head>
<body>
<table border="1">
<tr>
<td>
<select id="select1" style="width:100px;height:200px" size="10"
multiple="multiple">
<option value="选项1">选项1option>
<option value="选项2">选项2option>
<option value="选项3">选项3option>
<option value="选项4">选项4option>
<option value="选项5">选项5option>
<option value="选项6">选项6option>
<option value="选项7">选项7option>
<option value="选项8">选项8option>
<option value="选项9">选项9option>
select>
td>
<td align="center">
<input type="button" onclick="moveSelected('select1','select2')"
value="-->"/><br/>
<input type="button" onclick="moveAll('select1','select2')"
value="==>"/><br/>
<input type="button" onclick="moveSelected('select2','select1')"
value="<--"/><br/>
<input type="button" onclick="moveAll('select2','select1')"
value="<=="/>
td>
<td>
<select id="select2" style="width:100px;height:200px" size="10"
multiple="multiple">select>
td>
tr>
table>
body>
html>
<script>
function moveAll(srcId, targetId) {
$('#' + targetId).append($("#" + srcId + " > option"));
}
function moveSelected(srcId, targetId) {
$('#' + targetId).append($('#' + srcId + ' > option:selected'));
}
script>
新建 webapp/jq_01/12.distinct.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>下拉框去重title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
head>
<body>
<table border="1">
<tr>
<td>
<select id="s1" style="width:100px;" size="10"
multiple="multiple" >
<option value="1">选项1option>
<option value="2">选项2option>
<option value="3">选项3option>
<option value="4">选项4option>
<option value="5">选项5option>
select>
td>
<td align="center">
<input type="button" value="去除重复" onclick="distinct();"/>
<br/>
td>
<td>
<select id="s2" style="width:100px;" size="10"
multiple="multiple" >
<option value="1">选项1option>
<option value="3">选项3option>
<option value="5">选项5option>
select>
td>
tr>
table>
body>
html>
<script>
function distinct() {
// 先获取右边 select 中 option 获取 value 属性值,存到一个数组中
var arr = [];
$('#s2 > option').each(function(i, domEle){
var val = $(domEle).val();
arr.push(val); // 往数组最后添加一个元素
});
console.log(arr);
// 遍历左边 select 中 option 获取其 value 值,跟上面数组中到对比,若存在,则删除
对应 option
$('#s1 > option').each(function(i, domEle){
var $option = $(domEle);
var val = $option.val();
if($.inArray(val, arr) >= 0){ // 此 val 在数组存在
$option.remove(); // 删除对应 option 元素
}
});
}
script>
新建 webapp/jq_01/13.checkbox.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>全选title>
<script type="text/javascript" src="/static/jQuery-1.11/jquery-1.11.3.min.js">
script>
head>
<body>
请选择你的爱好:<br/>
<input type="checkbox" onchange="checkChange(this)" id="checkAll"/>全选/全不选
<br/>
<div>
<input type="checkbox" name="hobby"/>JAVA
<input type="checkbox" name="hobby"/>打篮球
<input type="checkbox" name="hobby"/>上网
<input type="checkbox" name="hobby"/>撩妹
div>
<div>
<input type="button" id="btn_checkAll" onclick="checkAll(true)"
value="全选"/>
<input type="button" onclick="checkAll(false)" value="全不选"/>
<input type="button" onclick="checkUnAll()" value="反选"/>
div>
body>
html>
<script>
function checkChange(src) {
// 根据被点击的复选框,来决定下面这些爱好的复选框的选中状态
var checked = $(src).prop('checked');
checkAll(checked);
}
function checkAll(flag) {
$('[name=hobby]').prop('checked', flag);
// 点击全选按钮的时候,最上面复选框要选中
// 点击全不选按钮的时候,最上面复选框不要选中
$('#checkAll').prop('checked', flag);
}
// 反选
function checkUnAll() {
$('[name=hobby]').each(function (i, domEle) {
// 获取其选中状态
var oldValue = $(domEle).prop('checked');
// 取反
var newValue = !oldValue;
// 再设置回去
$(domEle).prop('checked', newValue);
// $(domEle).prop('checked', !$(domEle).prop('checked'));
});
// 点击反选,若爱好全选中,最上面复选框要选中,反之不要选中
check();
}
$(function () {
// 点击所有爱好复选框,若爱好全选中,最上面复选框要选中,反之不要选中
$('[name=hobby]').click(function () {
check();
});
});
function check() {
var total = true; // 统计
$('[name=hobby]').each(function (i, domEle) {
var checked = $(domEle).prop('checked'); // 取每个爱好选中状态值
total = total && checked; // 跟变量 total 与并设置存到变量 total 中
});
// 当遍历结束的时候,total 值仍是 true, 那么代表所有爱好复选框是选中的
$('#checkAll').prop('checked', total);
}
script>