第1章: jQuery简介
- jQuery是继prototype之后又一个优秀的JavaScript框架。如今,**jQuery已经成为最流行的JavaScript库。**在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
- jQuery,顾名思义,也就是JavaScript和查询(Query),其宗旨是**“WRITE LESS,DO MORE”**,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。具体来说,优势如下:
- jQuery是免费、开源的
- 轻量级(压缩后只有几十k)
- 强大的选择器
- 出色的 DOM 操作的封装
- 可靠的事件处理机制
- 完善的 Ajax使用
- 出色的多浏览器兼容性
- 隐式迭代:对集合对象做相同操作时不需要逐个进行遍历,jQuery自动进行遍历
- 文档说明很全
- 可扩展插件
第2章:jQuery快速入门
2.1 将jQuery的库文件加入应用
- jQuery库实际上就是一个js文件,只需要在网页中直接引入这个文件就可以了。
- 将jQuery的库文件加入
-
在开发测试时, 用的是未压缩的版本: jquery-1.7.2.js -
在上线项目中, 会使用压缩后的版本: jquery-1.7.2.min.js
2.2 HelloWorld
<!-- 导入jQuery库-->
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
$("#btnId").click(function(){
alert("HelloWorld");
});
});
</script>
<button id="btnId">ClickMe</button>
第3章:jQuery基本语法
3.1 jQuery源码初分析
(function( window, undefined ) {
var jQuery = (function() {
var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context, rootjQuery );
};
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
}
};
return jQuery;
})();
window.jQuery = window.$ = jQuery;
})( window );
说明:
- 自执行函数
- 给window添加了两个等同的函数: jQuery() / $()
- 执行$()后,返回的是一个jQuery库包装的对象, 一般称之为:jQuery对象
- $就是jQuery对象,而jQuery是函数引用
- $():就是调用jQuery()函数
3.2 jQuery核心函数: $()
- jQuery库中为window对象定义了一个函数: jQuery(),简化为:$()
-
是
j
Q
u
e
r
y
的
核
心
函
数
,
?
?
j
Q
u
e
r
y
的
核
心
功
能
都
是
通
过
这
个
函
数
实
现
。
?
?
是jQuery的核心函数,**jQuery的核心功能都是通过这个函数实现。**
是jQuery的核心函数,??jQuery的核心功能都是通过这个函数实现。??()就是调用$这个函数。
- $函数会根据参数数据类型的不同做不同的工作, 返回一个jQuery封装的伪数组的对象
- 核心函数有如下的四个作用:
- 传入参数为函数时:$(function(){})
- 传入参数为选择器字符串时: $(选择器字符串)
- 传入参数为HTML字符串时:$(HTML字符串)
- 传入参数为DOM对象时: $(DOM对象)
3.2.1 传入参数为函数时:$(function(){})
- 传入一个function参数, 作为回调函数。相当于window.onload = function(){}
- 表示:在DOM文档载入完成后,回调函数自动执行
- 这个函数是 $(document).ready(function(){})的简写形式。(见jQuery文档 - 事件 - 页面载入)
- 它与window.onload是有区别的
3.2.2 传入参数为选择器字符串时: $(选择器字符串)
3.2.3 传入参数为HTML字符串时:$(HTML字符串)
-
接收一个标签字符串参数。 -
根据这个html字符串创建元素节点对象 -
创建对应的标签对象, 并包装成jQuery对象 -
代码举例: var $liEle = $("<li>香港</li>")
$("#city").append($liEle);
var liObj = document.createElement("li");
liObj.innerHTML = "香港";
document.getElementById("city").appendChlid(liObj);
<body>
<ul id="city">
<li id="bj">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul>
</body>
3.2.4 传入参数为DOM对象时: $(DOM对象)
3.3 jQuery对象和DOM对象区分
3.3.1 什么是DOM对象,什么是jQuery对象
- Dom对象:通过原生js实现的DOM标准查找到的元素对象
-
通过getElementById()查询出来的标签对象是Dom对象 -
通过getElementsByName()查询出来的标签对象是Dom对象 -
通过getElementsByTagName()查询出来的标签对象是Dom对象 -
通过createElement() 方法创建的对象,是Dom对象
- 通过jQuery提供的API查询到的对象,是jQuery对象。比如:3.2.2的情况
- 通过jQuery提供的API创建的对象,是jQuery对象。比如:3.2.3的情况
- 通过jQuery包装的DOM对象,也是jQuery对象。比如:3.2.4的情况
3.3.2 jQuery对象的本质
-
jQuery对象本质上是一个封装了DOM对象数组加一系列的jQuery的功能函数function的结构。 -
习惯上给jQuery对象命名时,变量名前加上$,便于区分jQuery对象和js DOM对象。 -
测试代码: <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
var arr = [12,"abc",true];
var $btnObjs = $("button");
alert("111");
for(var i = 0;i < $btnObjs.length;i++){
alert($btnObjs[i]);
}
});
</script>
</head>
<body>
<button id="btn">Button</button>
<button id="btn2">Button</button>
<button id="btn3">Button</button>
</body>
-
源码分析:
3.3.3 jQuery对象和DOM对象使用区别
- jQuery对象和DOM对象的属性不能互用,只能调用各自声明过的属性。
- jQuery对象和DOM对象的函数也不能互用,只能调用各自声明过的函数。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
alert(document.getElementById("testDiv").innerHTML);
alert($("#testDiv").innerHTML);
alert(document.getElementById("testDiv").getElementsByTagName("span")[0]);
alert($("#testDiv").getElementsByTagName("span")[0]);
});
</script>
</head>
<body>
<div id="testDiv">Atguigu is <span>100%</span> Very Good!</div>
</body>
3.3.4 DOM对象和jQuery对象的互相转换(掌握)
- DOM对象转jQuery对象
- 使用jQuery核心函数包装DOM对象:$(DOM对象)
- 例如:var $btnEle = $(btnEle)
- jQuery对象转DOM对象
- 使用数组下标:$btnEle[0]
- 使用get(index)方法:$btnEle.get(0)
- 为什么需要二者相互转换呢? (类比:为什么java里讲数组与集合间的转换?)
- DOM对象转为jQuery对象:为了调用jQuery提供的丰富的方法
- jQuery对象转为DOM对象:有些特殊需求在框架中没有提供,需要使用原生的js实现
3.3.5 DOM对象与jQuery对象练习
需求:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM对象和jQuery对象</title>
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
$("#dom2dom").click(function () {
var ele1 = document.getElementById("testDiv")
alert(ele1.innerText)
})
})
$(function () {
$("#dom2jQuery").click(function () {
var ele2 = document.getElementById("testDiv")
var $ele2 = $(ele2);
alert($ele2.text())
})
})
$(function () {
$("#jQuery2jQuery").click(function () {
var $ele3 = $("#testDiv");
alert($ele3.text())
})
})
$(function () {
$("#jQuery2dom").click(function () {
var $ele4 = $("#testDiv");
var ele4 = $ele4[0];
alert(ele4.innerText)
})
})
</script>
</head>
<body>
<div id="testDiv">挤进尚硅谷,注定你优秀!</div>
<br/>
<button id="dom2dom">使用DOM对象调用DOM方法</button>
<button id="dom2jQuery">使用DOM对象调用jQuery方法</button>
<button id="jQuery2jQuery">使用jQuery对象调用jQuery方法</button>
<button id="jQuery2dom">使用jQuery对象调用DOM方法</button>
</body>
</html>
第4章 选择器(重点)
见文档:
4.1 基本选择器 (重点)
-
基本选择器是jquery中最简单,也是最常用的选择器 -
它通过标签名,id属性,class属性来查找匹配的DOM元素
1) id选择器
2) 标签选择器
-
用法: $(‘tagName’) -
返回值:根据标签名匹配的一个或多个标签,封装成jQuery对象 -
举例
<div>DIV1</div>
<div>DIV2</div>
<span>SPAN</span>
$("div");
[ <div>DIV1</div>, <div>DIV2</div> ]
3) class选择器
-
用法: $(‘.class’) -
返回值:根据class属性值匹配一个或多个标签, 封装成jQuery对象 -
举例:
<div class="notMe">div class="notMe"</div>
<div class="myClass">div class="myClass"</div>
<span class="myClass">span class="myClass"</span>
$(".myClass");
[ <div class="myClass">div class="myClass"</div>, <span class="myClass">span class="myClass"</span> ]
4) *选择器
5) selector1,selector2,…(合并选择器)
-
用法: $(”div,span,.myClass”) -
返回值: 所有匹配选择器的标签, 封装成jQuery对象 -
举例:
<div>div</div>
<p class="myClass">p class="myClass"</p>
<span>span</span>
<p class="notMyClass">p class="notMyClass"</p>
$("div,span,p.myClass")
[ <div>div</div>, <p class="myClass">p class="myClass"</p>, <span>span</span> ]
4.2 层级选择器 (重点)
- 如果想通过DOM元素之间的层级关系来获取特定元素。例如后代元素、子元素、兄弟元素等。则需要通过层级选择器(或层次选择器)。
1) ancestor descendant
2) parent > child
- 用法: $(”form > input”)
- 说明: 在指定父元素下匹配所有子元素。
3) prev + next
4) prev ~ siblings
-
用法: $(”form ~ input”) -
说明: 匹配prev元素之后的所有 siblings元素,不包含该元素在内,并且siblings匹配的是和prev同辈的元素,其后辈子元素不被匹配。
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />
$("form ~ input")
[ <input name="none" /> ]
4.3 过滤选择器:基本
-
过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素, 该选择器都以 “:” 开头 -
按照不同的过滤规则,过滤选择器可以分为基本过滤,内容过滤,可见性过滤,属性过滤,子元素过滤,表单过滤和表单对象属性过滤选择器。
1) :first
2) :last
3) :not(selector)
-
用法: $(”input:not(:checked)”) -
说明: 去除所有与给定选择器匹配的元素。有点类似于”非”,意思是没有被选中的input(当input的type=”checkbox”)。
<input name="apple" />
<input name="flower" checked="checked" />
$("input:not(:checked)")
[ <input name="apple" /> ]
4) :even
-
用法: $(”tr:even”) -
说明: 匹配所有索引值为偶数的元素,从0开始计数。js的数组都是从0开始计数的。
<table>
<tr><td>Header 1</td></tr>
<tr><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>
$("tr:even")
[ <tr><td>Header 1</td></tr>, <tr><td>Value 2</td></tr> ]
5) :odd
6) :eq(index)
7) :gt(index)
8) :lt(index)
9) :header 、:animated、:focus省略
:header :匹配标题元素(h1~h6) :animated :匹配所有正在执行动画效果的元素
4.4 过滤选择器:内容
- 内容过滤选择器的过滤规则主要体现在它所包含的子元素和文本内容上
1) :contains(text)
-
用法: $(”div:contains(’John’)”) -
说明: 匹配包含给定文本的元素。这个选择器比较有用,当我们要选择的不是dom标签元素时,它就派上了用场了。它的作用是查找被标签”围”起来的文本内容是否符合指定的内容的。
<div>John Resig</div>
<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>
$("div:contains('John')")
[ <div>John Resig</div>, <div>Malcom John Sinclair</div> ]
2) :has(selector)
3) :empty
4) :parent
4.5 过滤选择器:可见性
1) :hidden
2) :visible
-
用法: $(”tr:visible”) -
说明: 匹配所有的可见元素。
4.6 过滤选择器:属性
- 属性过滤选择器的过滤规则是通过元素的属性来获取相应的元素。
1) [attribute]
2) [attribute=value]
- 用法: $(”input[name=‘newsletter’]“).attr(”checked”, true)
- 说明: 匹配给定的属性是某个特定值的元素。例子中选取了所有name属性是newsletter的 input 元素。
<input type="checkbox" name="newsletter" value="Hot Fuzz" />
<input type="checkbox" name="newsletter" value="Cold Fusion" />
<input type="checkbox" name="accept" value="Evil Plans" />
$("input[name='newsletter']").attr("checked", true);
[ <input type="checkbox" name="newsletter" value="Hot Fuzz" checked="true" />, <input type="checkbox" name="newsletter" value="Cold Fusion" checked="true" /> ]
3) [attribute!=value]
- 用法: $(”input[name!=‘newsletter’]“).attr(”checked”, true)。
- 说明:匹配所有不含有指定的属性,或者属性不等于特定值的元素。此选择器等价于:not([attr=value]),要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value])。之前看到的 :not 派上了用场。
<input type="checkbox" name="newsletter" value="Hot Fuzz" />
<input type="checkbox" name="newsletter" value="Cold Fusion" />
<input type="checkbox" name="accept" value="Evil Plans" />
$("input[name!='newsletter']").attr("checked", true);
[ <input type="checkbox" name="accept" value="Evil Plans" checked="true" /> ]
4) [attribute^=value]
5 ) [attribute$=value]
6) [attribute*=value]
- 用法: $(”input[name*=‘man’]“)
- 说明: 匹配给定的属性是以包含某些值的元素。
<input name="man-news" />
<input name="milkman" />
<input name="letterman2" />
<input name="newmilk" />
$("input[name*='man']")
[ <input name="man-news" />, <input name="milkman" />, <input name="letterman2" /> ]
7) [selector1] [selector2] [selectorN]
4.7 过滤选择器:子元素
1) :nth-child(index/even/odd/equation)
-
用法: $(”ul li:nth-child(2)”) -
说明: 匹配其父元素下的第N个子或奇偶元素.这个选择器和之前说的基础过滤(Basic Filters)中的 eq() 有些类似,不同的地方就是前者是从0开始,后者是从1开始。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>
$("ul li:nth-child(2)")
[ <li>Karl</li>, <li>Tane</li> ]
2) :first-child
-
用法: $(”ul li:first-child”) -
说明: 匹配第一个子元素。**’:first’ 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素。**这里需要特别的记忆一下区别。二者的调用者都是针对要操作的元素来讲的。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>
$("ul li:first-child")
[ <li>John</li>, <li>Glen</li> ]
3) :last-child
-
用法: $(”ul li:last-child”) -
说明: 匹配最后一个子元素。’:last’只匹配一个元素,而此选择符将为每个父元素匹配一个子元素。
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>
$("ul li:last-child")
[ <li>Brandon</li>, <li>Ralph</li> ]
4) : only-child
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
</ul>
$("ul li:only-child")
[ <li>Glen</li> ]
4.8 过滤选择器:表单
1) :input
- 用法: $(”:input”)
- 说明:匹配所有 text, textarea, select 和 button 元素 。
<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>
$(":input")
[
<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>,
]
2) :text
3) :password
4) :radio
5) :checkbox
6) :submit
7) :image
8) :reset
9) :button
-
用法: $(”:button”) -
说明: 匹配所有按钮.这个包括直接写的元素button。
<form>
<input type="text" />
<input type="checkbox" />
<input type="radio" />
<input type="image" />
<input type="file" />
<input type="submit" />
<input type="reset" />
<input type="password" />
<input type="button" />
<select><option/></select>
<textarea></textarea>
<button></button>
</form>
$(":button")
[ <input type="button" />,<button></button> ]
10) :file
11) :hidden
-
用法: $(”input:hidden”) -
说明: 匹配所有不可见元素,或者type为hidden的元素.这个选择器就不仅限于表单了,除了匹配input中的hidden外,那些style为hidden的也会被匹配。
<table>
<tr style="display:none"><td>Value 1</td></tr>
<tr><td>Value 2</td></tr>
</table>
$("tr:hidden")
[ <tr style="display:none"><td>Value 1</td></tr> ]
<form>
<input type="text" name="email" />
<input type="hidden" name="id" />
</form>
$("input:hidden")
结果:
[ <input type="hidden" name="id" /> ]
4.9 过滤选择器:表单对象属性
1) :enabled
-
用法: $(”input:enabled”) -
说明: 匹配所有可用元素.意思是查找所有input中不带有disabled=”disabled”的input.不为disabled,当然就为enabled啦。
<form>
<input name="email" disabled="disabled" />
<input name="id" />
</form>
$("input:enabled")
[ <input name="id" /> ]
2) :disabled
3) :checked
- 用法: $(”input:checked”)
- 说明: 匹配所有被选中的元素(复选框、单选框等,不包括下拉列表select中的option)。
- 注意:官方文档说明是不包括select中的option,但测试中是包含的。只是不建议大家这样用。
<form>
<input type="checkbox" name="newsletter" checked="checked" value="Daily" />
<input type="checkbox" name="newsletter" value="Weekly" />
<input type="checkbox" name="newsletter" checked="checked" value="Monthly" />
</form>
$("input:checked")
[ <input type="checkbox" name="newsletter" checked="checked" value="Daily" />, <input type="checkbox" name="newsletter" checked="checked" value="Monthly" /> ]
4) :selected
-
用法: $(”select option:selected”) -
说明: 匹配所有选中的option元素。
<select>
<option value="1">Flowers</option>
<option value="2" selected="selected">Gardens</option>
<option value="3">Trees</option>
</select>
$("select option:selected")
[ <option value="2" selected="selected">Gardens</option> ]
第5章 文档处理(CRUD)
5.1 查找节点
1) $(selector)
-
使用jQuery选择器查询 -
得到一个包含所有匹配的dom节点对象的jQuery对象
$("ul")
.append("<li>" + $("ul").selector + "</li>")
.append("<li>" + $("ul li").selector + "</li>")
.append("<li>" + $("div#foo ul:not([class])").selector + "</li>");
ul
ul li
div#foo ul:not([class])
2) find(selector)
-
查询jQuery对象内部数据 -
在Jquery对象中根据selector查找其中匹配的后代节点
<p><span>Hello</span>, how are you?</p>
$("p").find("span")
[ <span>Hello</span> ]
3) eq(index)
4) filter(expr|obj|ele|fn)
5) children([expr])
6) parent([expr])
7) parents([expr])
8) each(callback)
5.2 获取长度
1) 属性:length
2) 函数:size()
- jQuery 对象中元素的个数。与length属性作用一样。
5.3 内部插入节点
1) append(content)
2) appendTo(content)
3) prepend(content)
4) prependTo(content)
5.4 外部插入节点
1) after(content)
2) before(content)
3) insertAfter(content)
4) insertBefore(content)
5.5 创建节点
-
$(htmlString) -
动态创建的新元素节点不会被自动添加到文档中, 需要使用其他方法将其插入到文档中; -
当创建单个元素时, 需注意闭合标签和使用标准的 XHTML 格式. 例如创建一个<p> 元素, 可以使用 $("<p/>") 或$("<p></p>") , 但不能使用 $("<p>") 或 $("</P>") -
创建文本节点就是在创建元素节点时直接把文本内容写出来; 创建属性节点也是在创建元素节点时一起创建
5.6 删除节点
1) empty()
2) remove()
5.7 修改节点
1) replaceAll(selector)
2) replaceWith(content|fn)
第6章 属性、HTML代码、CSS
6.1 属性操作
1) attr(name ,[value])
-
attr(属性名) 返回“属性名”对应的属性值 -
attr(属性名,属性值) 将“属性名”对应的属性设置为“属性值”
$("img").attr("src");
$("img").attr("src","test.jpg");
2) prop()
- prop():同attr()一样。是jQuery1.6之后的
3) removeAttr(name)
6.2 HTML代码/值
1)html([val])
2)val([value])
- val() 读取value属性
- val(value值) 设置value属性
- val([选项值1,选项值2,…,选项值n]) 设置单选框、多选框或下拉列表被选中的值
$("input").val();
$("input").val("hello world!");
$('input:text.items').val(function() {
return this.value + ' ' + this.className;
});
<select id="single">
<option>Single</option>
<option>Single2</option>
</select>
<select id="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select><br/>
<input type="checkbox" value="check1"/> check1
<input type="checkbox" value="check2"/> check2
<input type="radio" value="radio1"/> radio1
<input type="radio" value="radio2"/> radio2
$("#single").val("Single2");
$("#multiple").val(["Multiple2", "Multiple3"]);
$("input").val(["check2", "radio1"]);
3)text()
6.3 CSS
1) addClass(className)
2) removeClass()
3) css(name,[value])
- 查看某个样式属性, 或设置某个样式属性
$("p").css("color");
$("p").css({ "color": "#ff0011", "background": "blue" });
$("p").css("color","red");
$("div").click(function() {
$(this).css({
width: function(index, value) {
return parseFloat(value) * 1.2;
},
height: function(index, value) {
return parseFloat(value) * 1.2;
}
});
});
第7章 事件
7.1 常用的事件
1) ready(fn)
说明:如果window.onload声明多个,不会报错,以最后给window.onload赋值的函数执行为准。 描述:
$(document).ready(function(){
});
$(function($) {
});
2) click([fn])
3) blur([fn])
4) change([fn])
5)live(“事件名”,fn)
事件委托:即使后续追加进来的元素只要能被匹配上,也会关联上相关事件。
6)mouseover(fn)
鼠标移入事件
7)mouseout(fn)
鼠标移入事件
7.2 绑定与解绑事件
1) bind(type, fn)
$("p").bind("click", function(){
alert( $(this).text() );
});
$('#foo').bind('mouseenter mouseleave', function() {
$(this).toggleClass('entered');
});
$("button").bind({
click:function(){$("p").slideToggle();},
mouseover:function(){$("body").css("background-color","red");},
mouseout:function(){$("body").css("background-color","#FFFFFF");}
});
function handler(event) {
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)
$("form").bind("submit", function() { return false; })
$("form").bind("submit", function(event){
event.preventDefault();
});
$("form").bind("submit", function(event){
event.stopPropagation();
});
2) unbind(type)
- bind()的反向操作,从每一个匹配的元素中删除绑定的事件
$("p").unbind()
$("p").unbind( "click" )
var foo = function () {
};
$("p").bind("click", foo);
$("p").unbind("click", foo);
7.3 事件切换
1) hover(over,out)
-
当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。 <head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
$("#h1").hover(function(){
alert("进入");
},function(){
alert("出来");
});
});
</script>
</head>
<body>
<h1 id="h1" style="background-color: red">我是标题</h1>
</body>
2) 事件冒泡
-
描述: 事件会按照 DOM 层次结构像水泡一样不断向上直至顶端。即:子元素事件触发引起父元素的事件也触发的现象 -
解决: 在事件处理函数中返回 false, 会对事件停止冒泡
<div id="content">
外层div元素
<span>内层span元素</span>
外层div元素
</div>
$(function(){
$("#content").click(function () {
alert("div");
})
$("span").click(function () {
alert("span");
return false;
})
})
第8章 效果(选学)
8.1 基本
1) show()
- 显示隐藏的匹配元素。
- 这个就是 ‘show( speed, [callback] )’ 无动画的版本。如果选择的元素是可见的,这个方法将不会改变任何东西。无论这个元素是通过hide()方法隐藏的还是在CSS里设置了display:none;,这个方法都将有效。
<p style="display: none">Hello</p>
$("p").show()
<p style="display: none">Hello</p>
$("p").show("slow");
<p style="display: none">Hello</p>
$("p").show("fast",function(){
$(this).text("Animation Done!");
});
<p style="display: none">Hello</p>
$("p").show(4000,function(){
$(this).text("Animation Done...");
});
2) hide()
$("p").hide()
$("p").hide("slow");
$("p").hide("fast",function(){
alert("Animation Done.");
});
3) toggle()
- 切换当前标签的可见性,如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。
$('td').toggle();
$("p").toggle("slow");
$("p").toggle("fast",function(){
alert("Animation Done.");
});
$('#foo').toggle(showOrHide);
if (showOrHide) {
$('#foo').show();
} else {
$('#foo').hide();
}
8.2 滑动
1) slideDown()
- 这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式显示出来
2) slideUp()
- 这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式隐藏起来
3) slideToggle()
8.3 淡入淡出
1) fadeIn()
2) fadeOut()
3) fadeToggle()
- 通过不透明度的变化来开关所有匹配元素的淡入和淡出效果
第九章 正则表达式
- 为什么需要正则表达式
- 在软件研发中,往往对数据验证要求严格,例如:【用户名只能是字母、数字、_。且长度为6-15】此时使用正则表达式更加方便、安全。
- 正则表达式概述:一组验证数据的规则。
- 使用
- 语法:
var reg = /正则表达式/ 官网的方式var reg = /^[规则]{m,n}$/ 实际开发中 - 验证:reg.test():返回布尔值。
var reg = /^[a-zA-z0-9_]{6,15}$/
var res = reg.test("asdff1289578__")
alert(res)
面试题:
题1:jQuery中$的作用是什么?
题2:jQuery对象和DOM对象有什么区别?如何转换?
题3:jQuery有哪几种选择器?
|