jquery从头开始——一篇文章学完jQuery基础
刚开始是做java web 开发的,一直主攻后端,所以前端能力有所欠缺。虽然jquery也一直在用,但是真的很不系统,每次遇到稍微有点生僻的就要查资料。首先要说明的一点是我的学习网络资源http://www.w3school.com.cn/jquery/index.asp 版权归w3school所有。这次狠下心把jquery花几天时间重新梳理一遍,要说明的是默认读者是有html基础的,下面直接从代码开始我们的jquery之旅
<html> <head> <!-引入jquery资源-> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("p").click(function(){ $(this).hide(); }); }); </script> </head> <body> <p>点击我,我会消失哦</p> </body> </html>
很简单的实现了一个功能,点击<p>元素内容,会隐藏<p>元素的内容。在<head>中引入jquery.js文件。平时我会这么写,加载Microsoft CDN (谷歌也有,但是谷歌在国内很蛋疼),也就是微软提供的jquery 网络资源
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"
这样做的好处是,用户很可能已经加载过微软jquery,那么当下次访问的时候会直接从缓存中加载,这样会加快访问的速度。
一. 四种获取元素的方式
- ${#test} 表示 id 为 test 的元素;
- ${.test} 表示 class test 的元素;
- ${this} 表示当前元素;
- ${p} 表示所有的<p>元素
需要说明的是this的用法,代码说明
<html> <head> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <script type="text/javascript"> <!-下面一行表示在文档完全加载完之后再运行js代码-> $(document).ready(function(){ <!-第一处-> $("button").click(function(){ <!-第二处-> $(this).hide(); }); }); </script> </head> <body> <button type="button">Click me</button> </body> </html>
代码表示所有的button标签在点击后隐藏自己。
二. jQuery选择器
前面一节讲了四种获取获取HTML元素的方法,大家也许发现了,只是通过一种方式满足不了我们的日常使用,如果我想获取的id为test的<p>元素呢?jQuery可以这样获取:${p#test} 选取所有id="test"的<p>元素。
1. jQuery元素选择器
jQuery 使用 CSS 选择器来选取 HTML 元素。
$("p") 选取 <p> 元素。
$("p.intro") 选取所有 class="intro" 的 <p> 元素。
$("p#demo") 选取所有 id="demo" 的 <p> 元素。
2. jQuery属性选择器
$("[href]") 选取所有带有 href 属性的元素。
$("[href='#']") 选取所有带有 href 值等于 "#" 的元素。
$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。
$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
3. jQuery CSS选择器
jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。比如下面表示把所有p元素的背景颜色变为红色;
$("p").css("background-color","red");
* jQuery是为处理 HTML 事件而特别设计的,下面是一些事件
$(document).ready(function) | 将函数绑定到文档的就绪事件(当文档完成加载时) |
$(selector).click(function) | 触发或将函数绑定到被选元素的点击事件 |
$(selector).dblclick(function) | 触发或将函数绑定到被选元素的双击事件 |
$(selector).focus(function) | 触发或将函数绑定到被选元素的获得焦点事件 |
$(selector).mouseover(function) | 触发或将函数绑定到被选元素的鼠标悬停事件 |
三. 隐藏、显示、切换,滑动,淡入淡出,以及动画
1. 隐藏与显示还记得前面学过的hide()函数吗?下面是功能更加强大的,具有动画效果的hide()和show()函数
$(selector).hide(speed,callback); //speed表示动画的速度,取值有"fast","slow"或者具体的毫秒数, $(selector).show(speed,callback); //callback表示动画执行完毕之后回调的函数名 $(selector).toggle(speed,callback);//表示hide与show之间的切换
下面代码表示点击隐藏按钮后,首先隐藏P标签的内容,然后执行show()函数,即弹出一个对话框。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ <!-在缓慢的隐藏p元素之后执行show函数-> $("p").hide(2000,show); }); }); <!-弹出一个窗口-> function show(){alert("隐藏了")} </script> </head> <body> <button type="button">隐藏</button> <p>这是一个段落。</p> <p>这是另一个段落。</p> </body> </html>
2. 淡入淡出
$(selector).fadeIn(speed,callback); //淡入 $(selector).fadeOut(speed,callback); //淡出 $(selector).fadeToggle(speed,callback); //淡入与淡出之间切换 $(selector).fadeTo(speed,opacity,callback);// opacity 是0到1之间的一个数值,表示不透明度
3. 滑动
$(selector).slideDown(speed,callback); //向下滑动 $(selector).slideUp(speed,callback); //向上滑动 $(selector).slideToggle(speed,callback); //向上与向下切换
4. 动画
动画用animate()来表示
<!DOCTYPE html> <html> <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ var div=$("div"); div.animate({left:'100px'},"slow"); div.animate({fontSize:'3em'},2000); }); }); </script> </head> <body> <button>开始动画</button> <div style="background:#98bf21;height:100px;width:200px;position:absolute;">HELLO</div> </body> </html>
上面代码实现的是:点击“开始动画”按钮,彩色快开始向右移动,完毕后div里面的HELLO字体开始变大。
有时候我们在上面这些动作进行的时候需要停止动作,可以对进行动作的元素执行函数stop();比如上面的
动画,我们可以用$("div").stop();来停止动画。
易错实例:我们在某个动画执行完后想继续执行下面的行为;比如hide()之后弹出alert();直接看代码
<html> <head> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ <!-写法1-> $("p").hide(1000); alert("先执行弹出窗,再完全隐藏掉p元素"); }); <!-写法2-> $("p").hide(1000,function(){ alert("P元素完全隐藏后再执行弹出窗");); }); }); </script> </head> <body> <button type="button">Hide</button> <p>This is a paragraph with little content.</p> </body> </html>
很明显写法2才是正确的选择。写法1是不能实现我们的需求的;因为JS执行是逐一执行的,隐藏执行接下来立马执行alert(),但是此时hide()函数还没有执行完,所以会产生这种错误。
5. jQuery chaining(动画链)
有时候需要对某个组件执行一系列的动画或动作,那么就需要jQuery chaining 了,如下所示
$("#p").css("color","red").slideUp(2000).slideDown(2000); //先改变颜色为红色,然后上滑接着下滑
三. jQuery HTML
jQuery 中非常重要的部分,就是操作 DOM(Document Object Model(文档对象模型)) 的能力。jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。下面列出常用的
1. HTML获取和设置
- text() - 设置或返回所选元素的文本内容
- html() - 设置或返回所选元素的内容(包括 HTML 标记)
- val() - 设置或返回表单字段的值
- attr() - 设置或返回属性的值