JavaScript方式
function myFunction() {
var obj=document.getElementById("h01");
obj.innerHTML="Hello jQuery";
}
onload=myFunction;
jQuery 方式
function myFunction() {
$("#h01").html("Hello jQuery");
}
$(document).ready(myFunction);
document ready 函数是为了防止文档在完全加载(就绪)之前运行 jQuery 代码.
如果在文档没有完全加载之前就运行函数,操作可能失败.下面是两个具体的例子:
-
试图隐藏一个不存在的元素
-
获得未完全加载的图像的大小
jQuery 属性选择器
jQuery 使用 XPath 表达式来选择带有给定属性的元素.
$("[href]")
选取所有带有 href 属性的元素.
$("[href='#']")
选取所有带有 href 值等于 “#” 的元素.
$("[href!='#']")
选取所有带有 href 值不等于 “#” 的元素.
$("[href$='.jpg']")
选取所有 href 值以 “.jpg” 结尾的元素.
jQuery 名称冲突
jQuery 使用 $ 符号作为 jQuery 的简介方式.
某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号.
jQuery 使用名为 noConflict()
的方法来解决该问题.
var jq=jQuery.noConflict()
,帮助您使用自己的名称(比如 jq)来代替 $ 符号.
这里注意到
$.noConflict();
jQuery(document).ready(function() {
jQuery("button").click(function(){
jQuery("p").text("jQuery 仍在运行!");
});
});
是可行的,$被替换为jQuery
var something = $.noConflict()
也是可行的
常用事件
$(document).ready(function) //将函数绑定到文档的就绪事件(当文档完成加载时)
$(selector).click(function) //触发或将函数绑定到被选元素的点击事件
$(selector).dblclick(function) //触发或将函数绑定到被选元素的双击事件
$(selector).focus(function) //触发或将函数绑定到被选元素的获得焦点事件
$(selector).mouseover(function) //触发或将函数绑定到被选元素的鼠标悬停事件
$(selector).hide(speed,callback);
$(selector).show(speed,callback);
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒. 可选的 callback 参数是隐藏或显示完成后所执行的函数名称.
$("button").click(function(){
$("p").hide(1000);
});
同理,toggle也可以设置速度
$(selector).toggle(speed,callback);
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒.
可选的 callback 参数是 toggle()
方法完成后所执行的函数名称.
同理
jQuery fadeIn()
用于淡入已隐藏的元素
jQuery fadeOut()
方法用于淡出可见元素
jQuery fadeToggle()
方法可以在 fadeIn()
与 fadeOut()
方法之间进行切换.
如果元素已淡出,则 fadeToggle()
会向元素添加淡入效果.
如果元素已淡入,则 fadeToggle()
会向元素添加淡出效果.
jQuery fadeTo()
方法允许渐变为给定的不透明度(值介于 0 与 1 之间).
jQuery slideDown()
方法用于向下滑动元素.
jQuery slideUp()
方法用于向上滑动元素
jQuery slideToggle()
动画
jQuery animate()
方法用于创建自定义动画.
$(selector).animate({params},speed,callback);
必需的 params 参数定义形成动画的 CSS 属性.
可选的 speed 参数规定效果的时长.它可以取以下值:”slow”、”fast” 或毫秒.
可选的 callback 参数是动画完成后所执行的函数名称.
举例
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("div").animate({left:'250px'});
});
});
</script>
</head>
<body>
<button>开始动画</button>
<p>默认情况下,所有 HTML 元素的位置都是静态的,并且无法移动.如需对位置进行操作,记得首先把元素的 CSS position 属性设置为 relative、fixed 或 absolute.</p>
<div style="background:#98bf21;height:100px;width:100px;position:absolute;">
</div>
</body>
</html>
多个属性调整举例
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("div").animate({
left:'250px',
opacity:'0.5',
height:'150px',
width:'150px'
});
});
});
</script>
</head>
<body>
<button>开始动画</button>
<p>默认情况下,所有 HTML 元素的位置都是静态的,并且无法移动.如需对位置进行操作,记得首先把元素的 CSS position 属性设置为 relative、fixed 或 absolute.</p>
<div style="background:#98bf21;height:100px;width:100px;position:absolute;">
</div>
</body>
</html>
说明
animate几乎可以操作所有css属性,但是
当使用 animate()
时,必须使用 Camel 标记法书写所有的属性名,
比如,必须使用 paddingLeft 而不是 padding-left,
使用 marginRight 而不是 margin-right,等等.
同时,色彩动画并不包含在核心 jQuery 库中.
如果需要生成颜色动画,您需要从 jQuery.com 下载 Color Animations 插件.
也可以定义相对值(该值相对于元素的当前值).需要在值的前面加上 += 或 -=:
实例
$("button").click(function(){
$("div").animate({
left:'250px',
height:'+=150px',
width:'+=150px'
});
});
甚至可以把属性的动画值设置为 “show”、”hide” 或 “toggle”:
实例
$("button").click(function(){
$("div").animate({
height:'toggle'
});
});
效果说明:点击隐藏,再点出现
更有意思的来了,队列
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function() {
$("button").click(function() {
var div=$("div");
div.animate({height:'300px',opacity:'0.4'},"slow");
div.animate({width:'300px',opacity:'0.8'},"slow");
div.animate({height:'100px',opacity:'0.4'},"slow");
div.animate({width:'100px',opacity:'0.8'},"slow");
});
});
</script>
</head>
<body>
<button>开始动画</button>
<p>默认情况下,所有 HTML 元素的位置都是静态的,并且无法移动.如需对位置进行操作,记得首先把元素的 CSS position 属性 设置为 relative、fixed 或 absolute.</p>
<div style="background:#98bf21;height:100px;width:100px;position:absolute;">
</div>
</body>
</html>
效果描述:依次执行,感觉这样的话,可以直接写一个动画片出来了
jQuery stop()
方法用于停止动画或效果,在它们完成之前.
stop()
方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画.
举例
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
$("#flip").click(function(){
$("#panel").slideDown(5000);
});
$("#stop").click(function(){
$("#panel").stop();
});
});
</script>
<style type="text/css">
#panel, #flip {
padding:5px;
text-align:center;
background-color:#e5eecc;
border:solid 1px #c3c3c3;
}
#panel {
padding:50px;
display:none;
}
</style>
</head>
<body>
<button id="stop">停止滑动</button>
<div id="flip">点击这里,向下滑动面板</div>
<div id="panel">Hello world!</div>
</body>
</html>
效果描述:点击开始滑动,点击停止,动画停止,再点击继续滑动,再点击停止,动画停止;
stopAll默认是false,即仅停止活动的动画
goToEnd可选,默认false
默认地,stop()
会清除在被选元素上指定的动画,
但是我感觉这个效果只是暂停,不是清除啊
Chaining链接
举例
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function()
{
$("button").click(function(){
$("#p1").css("color","red").slideUp(2000).slideDown(2000);
});
});
</script>
</head>
<body>
<p id="p1">jQuery 乐趣十足!</p>
<button>点击这里</button>
</body>
</html>
效果描述:先变红色,然后向上滑动,再向下滑动;
没有使用animate,依然有动画的效果惹
因为jQuery的语法不严格,所以可以这样写
$("#p1").css("color","red")
.slideUp(2000)
.slideDown(2000);
保持可读性
jQuery HTML
text()
- 设置或返回所选元素的文本内容
html()
- 设置或返回所选元素的内容(包括 HTML 标记)
val()
- 设置或返回表单字段的值
讲道理,text()我几乎就没成功拿出来过
$("#w3s").attr("href","http://www.w3school.com.cn/jquery");
设置属性
$("button").click(function(){
$("#w3s").attr({
"href" : "http://www.w3school.com.cn/jquery",
"title" : "W3School jQuery Tutorial"
});
});
设置多个属性
append()
- 在被选元素的结尾插入内容
prepend()
- 在被选元素的开头插入内容
after()
- 在被选元素之后插入内容
before()
- 在被选元素之前插入内容
举例
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
function appendText() {
var txt1="<p>Text.</p>"; // 以 HTML 创建新元素
var txt2=$("<p></p>").text("Text."); // 以 jQuery 创建新元素
var txt3=document.createElement("p");
txt3.innerHTML="Text."; // 通过 DOM 来创建文本
$("body").append(txt1,txt2,txt3); // 追加新元素
}
</script>
</head>
<body>
<p>This is a paragraph.</p>
<button onclick="appendText()">追加文本</button>
</body>
</html>
可以追加多个,用多种方式都可以创建
和after加以区别的是,append添加在被选元素的结尾,也就是
<span>aaaaaaaaaaaaaaa<a href="#">ddddd</a></span>
还是内部
而after是
<span>aaaaaaaaaaaaaaa</span>
<a href="#">ddddd</a>
同样另一对也是这样
remove()
- 删除被选元素(及其子元素)
empty()
- 从被选元素中删除子元素
remove()
支持接收参数对被删元素进行过滤
举例
$("p").remove(".italic");
addClass()
- 向被选元素添加一个或多个类
removeClass()
- 从被选元素删除一个或多个类
toggleClass()
- 对被选元素进行添加/删除类的切换操作
css()
方法设置或返回被选元素的一个或多个样式属性.
举例
$("p").css({"background-color":"yellow","font-size":"200%"});
jQuery 提供多个处理尺寸的重要方法
width()
方法设置或返回元素的宽度(不包括内边距、边框或外边距).
height()
方法设置或返回元素的高度(不包括内边距、边框或外边距).
outerWidth()
方法返回元素的宽度(包括内边距和边框).
outerHeight()
方法返回元素的高度(包括内边距和边框).
innerWidth()
方法返回元素的宽度(包括内边距).
innerHeight()
方法返回元素的高度(包括内边距).
注意是padding和border,不是margin
jQuery遍历
parent()
方法返回被选元素的直接父元素
parents()
方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (<html>
)
支持参数筛选
$(document).ready(function(){
$("span").parents("ul");
});
parentsUntil()
方法返回介于两个给定元素之间的所有祖先元素
$(document).ready(function(){
$("span").parentsUntil("div");
});
children()
方法返回被选元素的所有直接子元素.
支持筛选
$(document).ready(function(){
$("div").children("p.1");
});
find()
方法返回被选元素的后代元素,一路向下直到最后一个后代.
举例
$(document).ready(function(){
$("div").find("span");
});
举例2
$(document).ready(function(){
$("div").find("*");
});
例1中效果描述,往下一直找,不论辈分是儿子孙子还是曾孙子,凡是符合都算数
例2效果描述,返回全部的后代
siblings()
方法返回被选元素的所有同胞元素.
next()
方法返回被选元素的下一个同胞元素.
nextAll()
方法返回被选元素的所有跟随的同胞元素.
nextUntil()
方法返回介于两个给定参数之间的所有跟随的同胞元素.
prev()
, prevAll()
以及 prevUntil()
方法的工作方式与上面的方法类似,只不过方向相反而已:
它们返回的是前面的同胞元素(在 DOM 树中沿着同胞元素向后遍历,而不是向前).
first()
方法返回被选元素的首个元素.
last()
方法返回被选元素的最后一个元素.
eq()
方法返回被选元素中带有指定索引号的元素.
举例
$(document).ready(function(){
$("p").eq(1);
});
注意到是索引号,0开始
filter()
方法允许您规定一个标准.不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回.
举例
$(document).ready(function(){
$("p").filter(".intro");
});
not()
方法返回不匹配标准的所有元素.
提示:not()
方法与 filter()
相反.
下一章AJAX另开