version: jQuery-1.9.0
什么是 jQuery ?
jQuery,顾名思义,也就是 JavaScript 和查询(Query),它就是辅助 JavaScript 开发的 js 类库。
jQuery特性:
需求:使用 jQuery 给一个按钮绑定单击事件?
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>初识jQuerytitle>
<script src="jquery-1.9.0.js">script>
<script>
// window.onload = function () {
// var btnObj = document.getElementById("btnId");
// btnObj.onclick = function () {
// console.log("js 原生的单击事件");
// }
// }
// $(function(){}) 是 $(document).ready(function(){}) 的简写形式,效果类似 window.onload = function(){}
$(document).ready(function () {
var $btnObj = $("#btnId"); // 表示按 id 查询标签对象
$btnObj.click(function () { // 绑定单击事件
// alert("jQuery 的单击事件");
console.log("Query 的单击事件"); //浏览器下开发者工具(F12),console下显示查看
});
})
script>
head>
<body>
<button id="btnId">SayHellobutton>
body>
html>
常见问题?
- 问:使用 jQuery 一定要引入 jQuery 库吗?
答:是,必须- 问:jQuery 中的$到底是什么?
答:它是一个函数- 问:怎么为按钮添加点击响应函数的?
答:1. 使用 jQuery 查询到标签对象 2. 使用标签对象.click( function(){} );
$ 是 jQuery 的核心函数,能完成 jQuery 的很多功能。$()通常需要一个字符串参数
DOM 对象 Alert 效果:[object HTML 标签名 Element]
jQuery 对象 Alert 效果:[object Object]
jQuery 对象的本质是什么?
jQuery 对象是 dom 对象的数组 + jQuery 提供的一系列功能函数。
jQuery 对象不能使用 DOM 对象的属性和方法
DOM 对象也不能使用 jQuery 对象的属性和方法
p.myClass表示标签名必须是 p 标签,而且 class 类型还要是 myClass
基本选择器:
内容过滤器:
属性选择器:
表单选择器:
表单对象属性选择器:
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>选择器练习1title>
<script src="jquery-1.9.0.js">script>
<script>
$(function(){
//1. 点击所有的 p 节点, 能够弹出其对应的文本内容
//元素选择器
$("p").click(function () {
// alert("flameking");
//在隐式迭代中,当前正在处理的 this 是DOM对象
alert( $(this).html() );
})
//2. 使第二个 table 隔行变色
//基本选择器 层级选择器 css()方法
// $("table:eq(1) tr:even").css("background-color","#aaffbb");
//css()方法直接传入对象字面量,属性:"值"
$("table:eq(1) tr:even").css({
backgroundColor : "#aaffbb"
});
//3. 点击 button, 弹出 checkbox 被选中的个数
//表单选择器 表单属性选择器
$(":button").click(function () {
alert($(":checkbox:checked").length);
})
});
script>
head>
<body>
<p>段落1p><p>段落2p><p>段落3p>
<table>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
table>
<br><hr><br>
<table>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
<tr><td>第一行td><td>第一行td>tr>
table>
<input type="checkbox" name="test" />
<input type="checkbox" name="test" />
<input type="checkbox" name="test" />
<input type="checkbox" name="test" />
<input type="checkbox" name="test" />
<input type="checkbox" name="test" />
<button>您选中的个数button>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Selected Shakespeare Playstitle>
<style type="text/css">
/***************************************
Default Styles
************************************** */
html, body {
margin: 0;
padding: 0;
}
body {
font: 62.5% Verdana, Helvetica, Arial, sans-serif;
color: #000;
background: #fff;
}
#container {
font-size: 1.2em;
margin: 10px 2em;
}
h1 {
font-size: 2.5em;
margin-bottom: 0;
}
h2 {
font-size: 1.3em;
margin-bottom: .5em;
}
h3 {
font-size: 1.1em;
margin-bottom: 0;
}
code {
font-size: 1.2em;
}
a {
color: #06581f;
}
/***************************************
Chapter Styles
************************************** */
h2 {
clear: left;
}
li {
padding: 0 3px;
color: #000;
}
a {
color: #00c;
}
ul.tragedy {
border: 1px solid #999;
}
li.afterlink {
border-right: 4px solid #090;
}
table {
border-collapse: collapse;
}
th, td {
text-align: left;
padding: 2px 4px;
}
.special {
color: #f00;
}
.year {
background-color: #888;
color: #fff;
padding: 0 10px;
text-align: center;
}
style>
<script src="jquery-1.9.0.js">script>
<script>
//1. 给位于嵌套列表第二个层次的所有元素添加special类
$(document).ready(function () {
$("#selected-plays>li>ul>li").addClass("special");
//2. 给位于表格第三列的所有单元格添加year类
//find方法的隐式迭代机制,jQuery的大多数方法页具有同样的机制,
//find()方法是找出正在处理的元素的后代元素的好方法
$("tr").find("td:eq(2)").addClass("year");
//3. 为表格中包含文本Tragedy的第一行添加special类
// $("td:contains('Tragedy')").parent().eq(0).addClass("special");
$("td:contains('Tragedy')").parent().filter('tr:eq(0)').addClass('special');
//4. 挑战:选择包含链接()的所有列表项(元素),为每个选中的列表项的同辈列表项元素添加afterlink类
$("li").has("a").siblings().not("li:has(a)").addClass("afterlink");
// $('a').parent().parent().children().not('li:has(a)').addClass('afterlink');
//5. 挑战:为与.pdf链接最接近的祖先元素添加tragedy类
$("a[href$='.pdf']").parents("ul:eq(0)").addClass("tragedy");
});
script>
head>
<body>
<div id="container">
<h2>Selected Shakespeare Playsh2>
<ul id="selected-plays" class="clear-after">
<li>Comedies
<ul>
<li><a href="/asyoulikeit/">As You Like Ita>li>
<li>All's Well That Ends Wellli>
<li>A Midsummer Night's Dreamli>
<li>Twelfth Nightli>
ul>
li>
<li>Tragedies
<ul>
<li><a href="hamlet.pdf">Hamleta>li>
<li>Macbethli>
<li>Romeo and Julietli>
ul>
li>
<li>Histories
<ul>
<li>Henry IV (<a href="mailto:[email protected]">emaila>)
<ul>
<li>Part Ili>
<li>Part IIli>
ul>
li>
<li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry Va>li>
<li>Richard IIli>
ul>
li>
ul>
<h2>Shakespeare's Playsh2>
<table>
<tr>
<td>As You Like Ittd>
<td>Comedytd>
<td>td>
tr>
<tr>
<td>All's Well that Ends Welltd>
<td>Comedytd>
<td>1601td>
tr>
<tr>
<td>Hamlettd>
<td>Tragedytd>
<td>1604td>
tr>
<tr>
<td>Macbethtd>
<td>Tragedytd>
<td>1606td>
tr>
<tr>
<td>Romeo and Juliettd>
<td>Tragedytd>
<td>1595td>
tr>
<tr>
<td>Henry IV, Part Itd>
<td>Historytd>
<td>1596td>
tr>
<tr>
<td>Henry Vtd>
<td>Historytd>
<td>1599td>
tr>
table>
<h2>Shakespeare's Sonnetsh2>
<table>
<tr>
<td>The Fair Youthtd>
<td>1–126td>
tr>
<tr>
<td>The Dark Ladytd>
<td>127–152td>
tr>
<tr>
<td>The Rival Poettd>
<td>78–86td>
tr>
table>
div>
body>
html>
引用方法:jQuery对象.筛选方法,注意:经过多层筛选之后表达式依然返回一个jQuery对象,例如:“从所有的段落开始,进一步搜索下面的span元素” = $(“p”).find(“span”) 返回封装了所有p元素下span子元素的jQuery对象
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>全选全不选title>
<script type="text/javascript" src="jquery-1.9.0.js">script>
<script type="text/javascript">
$(function(){
var checkallboxObj = $("#checkedAllBox");
var itemObj = $("[name=items]");
function isAll() {
var flag = $("[name=items]:checked").length == 4;
checkallboxObj.prop("checked", flag);
}
//1. 给全选绑定单击事件
$("#checkedAllBtn").click(function () {
itemObj.prop("checked",true);
isAll();
})
// 给全不选绑定单击事件
$("#checkedNoBtn").click(function () {
itemObj.prop("checked",false);
isAll();
})
// 反选单击事件
$("#checkedRevBtn").click(function () {
itemObj.each(function () {
this.checked = !this.checked;
})
isAll();
})
// 【提交】按钮单击事件
$("#sendBtn").click(function () {
$("[name=items]:checked").each(function () {
alert(this.value);
})
})
// 给【全选/全不选】绑定单击事件
checkallboxObj.click(function () {
itemObj.prop("checked", this.checked);
})
// 给全部球类绑定单击事件
itemObj.click(function () {
isAll();
})
});
script>
head>
<body>
<form method="post" action="">
你爱好的运动是?<input type="checkbox" id="checkedAllBox" />全选
<br />
<input type="checkbox" name="items" value="足球" />足球
<input type="checkbox" name="items" value="篮球" />篮球
<input type="checkbox" name="items" value="羽毛球" />羽毛球
<input type="checkbox" name="items" value="乒乓球" />乒乓球
<br />
<input type="button" id="checkedAllBtn" value="全 选" />
<input type="button" id="checkedNoBtn" value="全不选" />
<input type="button" id="checkedRevBtn" value="反 选" />
<input type="button" id="sendBtn" value="提 交" />
form>
body>
html>
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>表单选择器title>
<script type="text/javascript" src="jquery-1.9.0.js">script>
<script type="text/javascript">
$(function(){
//使单选下拉框的'选择3号'被选中
$(":button:eq(0)").click(function(){
//$("#single :option:eq(2)").attr("selected", "selected");
//使设定的值对应的单选列表selected
$("#single").val("s3");
});
$(":button:eq(1)").click(function(){
//使设定的值对应的多选列表selected
$("#multiple").val(["x2", "x4"]);
});
$(":button:eq(2)").click(function(){
//使设定的值对应的多选列表checked
$(":checkbox").val(["check2", "check4"]);
});
$(":button:eq(3)").click(function(){
$(":radio").val("[radio2]");
});
$(":button:eq(4)").click(function(){
$("#single")
.add("#multiple")
.add(":checkbox:checked")
.add(":radio:checked")
.each(function(){
alert($(this).val());
});
});
});
script>
head>
<body>
<input type="button" value="使单选下拉框的'选择3号'被选中"/>
<input type="button" value="使多选下拉框选中的'选择2号'和'选择4号'被选中"/><br>
<input type="button" value="使多选框的'多选2'和'多选4'被选中"/>
<input type="button" value="使单选框的'单选2'被选中"/><br>
<input type="button" value="打印已经被选中的值"><br>
<br/>
<select id="single" name="singlecheck">
<option value="s1">选择1号option>
<option value="s2">选择2号option>
<option value="s3">选择3号option>
select>
<select id="multiple" multiple="multiple" name="multiplecheck" style="height:120px;">
<option selected="selected" value="x1">选择1号option>
<option value="x2">选择2号option>
<option value="x3">选择3号option>
<option value="x4">选择4号option>
<option selected="selected" value="x5">选择5号option>
select>
<br/><br/>
<input type="checkbox" name="c" value="check1"/> 多选1
<input type="checkbox" name="c" value="check2"/> 多选2
<input type="checkbox" name="c" value="check3"/> 多选3
<input type="checkbox" name="c" value="check4"/> 多选4
<br/>
<input type="radio" name="r" value="radio1"/> 单选1
<input type="radio" name="r" value="radio2"/> 单选2
<input type="radio" name="r" value="radio3"/> 单选3
body>
html>
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
<style type="text/css">
select {
width: 100px;
height: 140px;
}
div {
width: 130px;
float: left;
text-align: center;
}
style>
<script type="text/javascript" src="jquery-1.9.0.js">script>
<script type="text/javascript">
$(function(){
//选中添加到右边
$("button:eq(0)").click(function(){
$("select[name=sel01] :selected").each(function(){
//alert(this);
//appendTo() 在元素内部,之前添加内容
//注意:插入顺序是预定义的,即从DOM树上方开始向下依次插入
$(this).appendTo("select[name=sel02]");
});
});
//全部添加到右边
$("button:eq(1)").click(function(){
$("select[name=sel01] option").each(function(){
//alert(this);
$(this).appendTo("select[name=sel02]");
});
});
//选中删除到左边
$("button:eq(2)").click(function(){
$("select[name=sel02] :selected").each(function(){
//alert(this);
$(this).appendTo("select[name=sel01]");
});
});
//全部删除到左边
$("button:eq(3)").click(function(){
$("select[name=sel02] option").each(function(){
//alert(this);
$(this).appendTo("select[name=sel01]");
});
});
});
script>
head>
<body>
<div id="left">
<select multiple="multiple" name="sel01">
<option value="opt01" >选项1option>
<option value="opt02">选项2option>
<option value="opt03">选项3option>
<option value="opt04">选项4option>
<option value="opt05">选项5option>
<option value="opt06">选项6option>
<option value="opt07">选项7option>
<option value="opt08">选项8option>
select>
<button>选中添加到右边button>
<button>全部添加到右边button>
div>
<div id="right">
<select multiple="multiple" name="sel02">
select>
<button>选中删除到左边button>
<button>全部删除到左边button>
div>
body>
html>
DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Documenttitle>
<link rel="stylesheet" type="text/css" href="styleB/css.css" />
<script type="text/javascript" src="jquery-1.9.0.js">script>
<script type="text/javascript">
$(function(){
//方法1.
// var deleteFun = function(master){
// alert(master);
// $(master).parents("tr").remove();
// };
// $("#employeeTable").find("a").click(function () {
// deleteFun(this);
// })
//方法2.
//删除用户的方法
var deleteFun = function(){
$(this).parents("tr").remove();
};
//删除用户
$("#employeeTable").find("a").click(deleteFun);
//添加员工
$("#addEmpButton").click(function(index){
//获取用户填写的内容
var name = $("#empName").val();
var email = $("#email").val();
var salary = $("#salary").val();
var addObj = $("" +
"" + name + " " +
"" + email + " " +
"" + salary + " " +
"Delete " +
" ");
addObj.appendTo("#employeeTable");
//对添加的选项补充删除
addObj.find("a").click(deleteFun);
});
});
script>
head>
<body>
<table id="employeeTable">
<tr>
<th>Nameth>
<th>Emailth>
<th>Salaryth>
<th> th>
tr>
<tr>
<td>Tomtd>
<td>[email protected]td>
<td>5000td>
<td><a href="#1">Deletea>td>
tr>
<tr>
<td>Jerrytd>
<td>[email protected]td>
<td>8000td>
<td><a href="#2">Deletea>td>
tr>
<tr>
<td>Bobtd>
<td>[email protected]td>
<td>10000td>
<td><a href="#3">Deletea>td>
tr>
table>
<div id="formDiv">
<h4>添加新员工h4>
<table>
<tr>
<td class="word">name: td>
<td class="inp">
<input type="text" name="empName" id="empName" />
td>
tr>
<tr>
<td class="word">email: td>
<td class="inp">
<input type="text" name="email" id="email" />
td>
tr>
<tr>
<td class="word">salary: td>
<td class="inp">
<input type="text" name="salary" id="salary" />
td>
tr>
<tr>
<td colspan="2" align="center">
<button id="addEmpButton" value="abc">
Submit
button>
td>
tr>
table>
div>
body>
html>
以上动画方法都可以添加参数:
- 第一个参数是动画 执行的时长,以毫秒为单位
- 第二个参数是动画的回调函数 (动画完成后自动调用的函数)
需求:
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>品牌展示练习title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
body {
font-size: 12px;
text-align: center;
}
a {
color: #04D;
text-decoration: none;
}
a:hover {
color: #F50;
text-decoration: underline;
}
.SubCategoryBox {
width: 600px;
margin: 0 auto;
text-align: center;
margin-top: 40px;
}
.SubCategoryBox ul {
list-style: none;
}
.SubCategoryBox ul li {
display: block;
float: left;
width: 200px;
line-height: 20px;
}
.showmore , .showless{
clear: both;
text-align: center;
padding-top: 10px;
}
.showmore a , .showless a{
display: block;
width: 120px;
margin: 0 auto;
line-height: 24px;
border: 1px solid #AAA;
}
.showmore a span {
padding-left: 15px;
background: url(img/down.gif) no-repeat 0 0;
}
.showless a span {
padding-left: 15px;
background: url(img/up.gif) no-repeat 0 0;
}
.promoted a {
color: #F50;
}
style>
<script type="text/javascript" src="jquery-1.9.0.js">script>
<script type="text/javascript">
$(function() {
//设定初始状态
$("li:gt(5):not(':last')").toggle();
// 1. 点击按钮的时候,隐藏和显示卡西欧之后的品牌。
$("div div").click(function () {
// if($("li:hidden").length === 0){
// $("li:gt(5)").hide();
// $("span").text("显示精简品牌");
// }
// else{
// $("li:gt(5)").show();
// $("span").text("显示全部品牌");
// }
if( $("li:gt(5):not(':last')").toggle().is(":hidden") ){
$("span").text("显示全部品牌");
$("div div").removeClass().addClass("showmore");
}else{
$("span").text("显示精简品牌");
$("div div").removeClass().addClass("showless");
}
return false;
})
// 2. 当显示全部内容的时候,按钮文本为“显示精简品牌”,然后,小三角形向上。所有品牌产品为默认颜色。
// 3. 当只显示精简品牌的时候,要隐藏卡西欧之后的品牌,按钮文本为“显示全部品牌”然后小三形向下。并且把 佳能,尼康的品牌颜色改为红色(给 li 标签添加promoted 样式即可)
});
script>
head>
<body>
<div class="SubCategoryBox">
<ul>
<li><a href="#">佳能a><i>(30440) i>li>
<li><a href="#">索尼a><i>(27220) i>li>
<li><a href="#">三星a><i>(20808) i>li>
<li><a href="#">尼康a><i>(17821) i>li>
<li><a href="#">松下a><i>(12289) i>li>
<li><a href="#">卡西欧a><i>(8242) i>li>
<li><a href="#">富士a><i>(14894) i>li>
<li><a href="#">柯达a><i>(9520) i>li>
<li><a href="#">宾得a><i>(2195) i>li>
<li><a href="#">理光a><i>(4114) i>li>
<li><a href="#">奥林巴斯a><i>(12205) i>li>
<li><a href="#">明基a><i>(1466) i>li>
<li><a href="#">爱国者a><i>(3091) i>li>
<li><a href="#">其它品牌相机a><i>(7275) i>li>
ul>
<div class="showmore">
<a href="more.html"><span>显示全部品牌span>a>
div>
div>
body>
html>
$( function(){} ) 和 window.onload = function(){}的区别?他们分别是在什么时候触发?
1. jQuery 的页面加载完成之后是浏览器的内核解析完页面的标签创建好 DOM 对象之后就会马上执行。
2. 原生 js 的页面加载完成之后,除了要等浏览器内核解析完标签创建好 DOM 对象,还要等标签显示时需要的内容加载完成,例如图片加载。
他们触发的顺序?
1. jQuery 页面加载完成之后先执行
2. 原生 js 的页面加载完成之后
他们执行的次数?
1. 原生 js 的页面加载完成之后,只会执行最后一次的赋值函数。
2. jQuery 的页面加载完成之后是全部把注册的 function 函数,依次顺序全部执行。
什么是事件的冒泡?
事件的冒泡是指,父子元素同时监听同一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去响应。
那么如何阻止事件冒泡呢?
在子元素事件函数体内,return false; 可以阻止事件的冒泡传递。
是封装有触发的事件信息的一个 javascript 对象,我们重点关心的是怎么拿到这个 javascript 的事件对象,以及怎么使用。
如何获取呢 javascript 事件对象呢?
在给元素绑定事件的时候,在事件的 function( event ) 参数列表中添加一个参数,
这个参数名,我们习惯取名为 event。这个 event 就是 javascript 传递参事件处理函数的事件对象。
比如:
<script>
//1.原生 javascript 获取 事件对象
window.onload = function () {
document.getElementById("areaDiv").onclick = function (event) {
console.log(event);
}
}
//2.jQuery 代码获取 事件对象
$(function () {
$("#areaDiv").click(function (event) {
console.log(event);
});
});
//3.使用 bind 同时对多个事件绑定同一个函数。怎么获取当前操作是什么事件。
$("#areaDiv").bind("mouseover mouseout",function (event) {
if (event.type == "mouseover") {
console.log("鼠标移入");
} else if (event.type == "mouseout") {
console.log("鼠标移出");
}
});
script>
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>图片跟随title>
<style type="text/css">
body {
text-align: center;
}
#small {
margin-top: 150px;
}
#showBig {
position: absolute;
display: none;
}
style>
<script type="text/javascript" src="jquery-1.9.0.js">script>
<script type="text/javascript">
$(function(){
//利用bind同时绑定多个事件
$("#small").bind("mousemove mouseover mouseout", function (event) {
var $bigImg = $("#showBig");
//如何通过样式设定图片的位置
var x = event.pageX;
var y = event.pageY;
if(event.type === "mousemove"){
//利用css设定多种样式的方法:传入字面量对象
$bigImg.css({
left:x + 10,
top:y + 10
});
}else if(event.type === "mouseover"){
$bigImg.show().css({
left:x + 10,
top:y + 10
});
}else if(event.type === "mouseout"){
$bigImg.hide();
}
})
});
script>
head>
<body>
<img id="small" src="img/small.jpg" />
<div id="showBig"><img src="img/big.jpg">div>
body>
html>