前面我们解说了的J2EE的技术都是服务端的技术,以下我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术
jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多
javascript高手增加其team。jQuery可以使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,仅仅需定义id就可以。
我们在使用MyEclipse中编写jQuery的时候,是没有不论什么提示的,所以写代码非常难受的,我们须要借助额外的工具Aptana,这个在编写js,jQuery,Ajax等都会有相关的提示,详细怎样在MyEclipse中加入这个工具,看例如以下的一篇文章:
http://blog.csdn.net/jiangwei0910410003/article/details/28423545
jQuery的一个简单样例:
<!--引入jquery的js库--> <script type="text/javascript" src="script/jquery-1.4.2.js"></script> <script language="JavaScript"> $(document).ready(function(){//等待dom元素载入完成,相似window.onload; alert("您好,我是张三丰"); }); </script>这里要注意的是一定要记得引入jquery的js库:jquery-1.4.2.js文件
jQuery 对象就是通过jQuery包装DOM对象后产生的对象。
jQuery 对象是 jQuery 独有的. 假设一个对象是 jQuery 对象, 那么它就能够使用 jQuery 里的方法: $(“#test”).html();
比方:
$("#test").html() 意思是指:获取ID为test的元素内的html代码。当中html()是jQuery里的方法
这段代码等同于用DOM实现代码:
document.getElementById(" test ").innerHTML;
尽管jQuery对象是包装DOM对象后产生的,可是jQuery无法使用DOM对象的不论什么方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错
约定:假设获取的是 jQuery 对象, 那么要在变量前面加上 $.
var $variable = jQuery对象
var variable = DOM对象
对于已经是一个DOM对象,仅仅须要用$()把DOM对象包装起来,就能够获得一个jQuery对象了。$(DOM对象)
转换后就能够使用 jQuery 中的方法了
两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index);
(1) jQuery对象是一个数组对象,能够通过[index]的方法,来得到对应的DOM对象
(2) jQuery本身提供,通过.get(index)方法,得到对应的DOM对象
选择器是 jQuery 的根基, 在 jQuery 中, 对事件处理, 遍历 DOM 和 Ajax 操作都依赖于选择器
jQuery 选择器的长处:
简洁的写法
${“#id”} 等价于 document.getElementById("id");
${“tagName”} 等价于 document.getElementsByTagName("tagName");
完好的事件处理机制
val()获得第一个匹配元素的当前值.
//若网页中没有id=value的元素,浏览器会报错
document.getElementById("username").value;
//须要推断document.getElementById("username")是否存在
if(document.getElementById("username")){ var username=document.getElementById("username"); alert(username.value); }else{ alert("没有该id元素"); }
基本选择器是 jQuery 中最经常使用的选择器, 也是最简单的选择器, 它通过元素 id, class 和标签名来查找 DOM 元素(在网页中 id 仅仅能使用一次, class 同意反复使用).
1、#id使用方法: $(”#myDiv”); 返回值 单个元素的组成的集合
说明: 这个就是直接选择html中的id=”myDiv”
2、Element使用方法: $(”div”) 返回值 集合元素
说明: element的英文翻译过来是”元素”,所以element事实上就是html已经定义的标签元素,比如 div, input, a 等等.
3、class 使用方法: $(”.myClass”) 返回值 集合元素
说明: 这个标签是直接选择html代码中class=”myClass”的元素或元素组(由于在同一html页面中class是能够存在多个相同值的).
4、*使用方法: $(”*”) 返回值 集合元素
说明: 匹配全部元素,多用于结合上下文来搜索
5、selector1, selector2, selectorN 使用方法: $(”div,span,p.myClass”) 返回值 集合元素
说明: 将每个选择器匹配到的元素合并后一起返回.你能够指定随意多个选择器, 并将匹配到的元素合并到一个结果内.当中p.myClass是表示匹配元素
p class=”myClass”
基本选择器演示样例:
改变 id 为 one 的元素的背景色为 #0000FF
改变 class 为 mini 的全部元素的背景色为 #FF0033
改变元素名为 <div> 的全部元素的背景色为 #00FFFF
改变全部元素的背景色为 #00FF33
改变全部的<span>元素和 id 为 two 的元素的背景色为 #3399FF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>base_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <input value="haha" type="text" id="username" name="username" /> <span style="white-space:pre"> </span><input type="button" value="改变id为one的元素的背景颜色" id="b1" /> <input type="button" value="改变全部div的背景颜色" id="b2" /> <input type="button" value="改变全部div背景颜色 为绿色" id="b3" /> <input type="button" value="改变全部span和id为two的背景颜色 " id="b4" /> <table border="1" cellspacing="0" width="200"> <tr> <td id="one"><a href="#">1</a></td> <td class="mini"><a href="#">2</a></td> <td>3</td> </tr> </table> <a href="#">嘿嘿</a> <div>div1</div> <div class="mini" id="two">div2</div> <div>div3</div> <span>span1</span> <span>span2</span> </body> <script language="JavaScript"> //<input value="haha" type="text" id="username" name="username" />获得焦点 $("#username").focus(function(){ alert("aaa"); }); //一、<input type="button" value="改变id为one的元素的背景颜色" name="ok" /> $("#b1").click(function(){ $("#one").css("background-color", "red"); }); //二、改变全部div背景颜色 为绿色 $("#b2").click(function(){ $("div").css("background-color", "green"); }); //三、改变class是mini的全部背景颜色为蓝色 $("#b3").click(function(){ $(".mini").css("background-color", "blue"); }); //四、改变全部span和id为two的背景颜色 $("#b4").click(function(){ $("span,#two").css("background-color", "yellow"); }); </script> </html>
假设想通过 DOM 元素之间的层次关系来获取特定元素, 比如后代元素, 子元素, 相邻元素, 兄弟元素等, 则须要使用层次选择器.
1 、ancestor descendant
使用方法: $(”form input”) ; 返回值 集合元素
说明: 在给定的祖先元素下匹配全部后代元素.这个要以下讲的”parent > child”区分开.
2、parent > child 使用方法: $(”form > input”) ; 返回值 集合元素
说明: 在给定的父元素下匹配全部子元素.注意:要区分好后代元素与子元素
3、prev + next
使用方法: $(”label + input”) ; 返回值 集合元素
说明: 匹配全部紧接在 prev 元素后的 next 元素
4、prev ~ siblings
使用方法: $(”form ~ input”) ; 返回值 集合元素
说明: 匹配 prev 元素之后的全部 siblings 元素.注意:是匹配之后的元素,不包括该元素在内,而且siblings匹配的是和prev同辈的元素,其后辈元素不被匹配.
注意: (“prev ~ div”) 选择器仅仅能选择 “# prev ” 元素后面的同辈元素; 而 jQuery 中的方法 siblings() 与前后位置无关, 仅仅要是同辈节点就能够选取
层次选择器演示样例:
改变全部td中<a>标签的字体
改变全部td中但不是td孙子下面的<a>标签的颜色
改变id为one的下一个td背景色
改变id为two的全部div的背景色
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>base_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <input type="button" value="改变全部td中<a>标签的字体" id="b1" /> <input type="button" value="改变全部td中但不是td孙子下面的<a>标签的颜色" id="b2" /> <input type="button" value="改变id为one的下一个td背景色" id="b3" /> <input type="button" value="改变id为two的全部div的背景色" id="b4" /> <table border="1" cellspacing="0" width="200"> <tr> <td id="one"><a href="#">1</a></td> <td class="mini"><a href="#">2</a><div><a>div中的</a></div></td> <td>3</td> </tr> </table> <a href="#">嘿嘿</a> <div>div1</div> <div class="mini" id="two">div2</div> <div>div3</div> <div>div4</div> <span>span1</span> <span>span2</span> </body> <script language="JavaScript"> //层次选择器 // 一、 改变全部td中<a>标签的字体 $("#b1").click(function(){ $("td a").css("background-color", "silver"); }); //二、 改变全部td中但不是td孙子下面的<a>标签的字体 $("#b2").click(function(){ $("td>a").css("background-color", "silver"); }); //三、改变id为one的下一个td背景色 $("#b3").click(function(){ $("#one+td").css("background-color", "red"); }); //四、改变id为two的全部div的背景色 $("#b4").click(function(){ $("#two~div").css("background-color", "red"); }); </script> </html>
过滤选择器主要是通过特定的过滤规则来筛选出所需的 DOM 元素, 该选择器都以 “:” 开头
依照不同的过滤规则, 过滤选择器能够分为基本过滤, 内容过滤, 可见性过滤, 属性过滤, 子元素过滤和表单对象属性过滤选择器.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>baseFilter_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> <style type="text/css"> #mover{ width:100px; height:200px; background-color:red; } </style> </head> <body> <input type="button" value="改变第一个div的背景色" id="b1" /> <input type="button" value="改变最后一个div的背景色" id="b2" /> <input type="button" value="改变class不为one的全部div的背景色" id="b3" /> <input type="button" value="改变索引值为偶数的div的背景色" id="b4" /> <input type="button" value="改变索引值为基数的div的背景色" id="b5" /> <input type="button" value="改变索引值大于3的div的背景色" id="b6" /> <input type="button" value="改变索引值等于3的div的背景色" id="b7" /> <input type="button" value="改变索引值小于3的div的背景色" id="b8" /> <input type="button" value="改变全部标题元素的背景色" id="b9" /> <h2>h2</h2> <h5>h5</h5> <h3>h3</h3> <div class="one">div1</div> <div class="one">div2</div> <div>div3</div> <div>div4</div> <div>div5</div> <div>div6</div> <div>div7</div> <div class="one">div8</div> <div>div9</div> <input type="button" value="添加动画效果" id="b10" /><br> <div id="mover">动画</div> </body> <script language="JavaScript"> //一、改变第一个div的背景色 $("#b1").click(function(){ $("div:first").css("background-color", "yellow"); }); //二、改变最后一个div的背景色 $("#b2").click(function(){ $("div:last").css("background-color", "red"); }); //三、改变class不为one的全部div的背景色 $("#b3").click(function(){ $("div:not(.one)").css("background-color", "yellow"); }); //四、改变索引值为偶数的div的背景色 $("#b4").click(function(){ $("div:even").css("background-color", "yellow"); }); //五、改变索引值为基数的div的背景色 $("#b5").click(function(){ $("div:odd").css("background-color", "yellow"); }); //六、改变索引值大于3的div的背景色 $("#b6").click(function(){ $("div:gt(3)").css("background-color", "yellow"); }); //七、改变索引值等于3的div的背景色 $("#b7").click(function(){ $("div:eq(3)").css("background-color", "yellow"); }); //八、改变索引值小于3的div的背景色 $("#b8").click(function(){ $("div:lt(3)").css("background-color", "yellow"); }); //九、改变全部标题元素的背景色 $("#b9").click(function(){ $(":header").css("background-color", "yellow"); }); //十、 <div id="mover">动画</div> 添加动画效果 $("#b10").click(function(){ $(":animated").css("background-color", "yellow"); }); function ca(){ $("#mover").slideToggle(800, ca); } ca(); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>contentFilter_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> <style> .mini{ width:100px; height:50px; background-color:green; } </style> </head> <body> <input type="button" value="改变含有文本di的背景色" id="b1" /> <input type="button" value="改变没有文本的背景色" id="b2" /> <input type="button" value="改变含有<p>的div元素的背景色" id="b3" /> <input type="button" value="改变含有子元素或者文本的div" id="b4" /> <input type="button" value="改变不含有文本di的div元素的背景色" id="b5" /> <div> id为one div</div> <div ><p> id为two class是mini div</p></div> <div class="mini"></div> <div> id为two class是mini</div> <table border="1" cellspacing="0" width="200"> <tbody> <tr> <td>1</td> <td>1</td> <td></td> <td></td> </tr> </tbody> </table> </body> <script language="JavaScript"> //一、改变含有文本di的背景色 $("#b1").click(function(){ $("div:contains('di')").css("background-color", "green"); }); //二、改变没有文本的背景色 $("#b2").click(function(){ $("td:empty").css("background-color", "green"); }); //三、改变含有<p>的div元素的背景色 $("#b3").click(function(){ $("div:has(p)").css("background-color", "yellow"); }); //四、改变含有子元素或者文本的div $("#b4").click(function(){ $("div:parent").css("background-color", "yellow"); }); //五、改变不含有文本di的div元素的背景色 $("#b5").click(function(){ $("div:not(:contains(di))").css("background-color", "yellow"); }); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>visiableFilter_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> <style type="text/css"> div.visiable{ display:none; } </style> </head> <body> <input type="button" value="改变全部可见的div的背景色" id="b1" /> <input type="button" value="选取全部不可见的元素并将他们显示出来" id="b2" /> <input type="button" value="选取全部的文本影藏" id="b3" /> <div>可见</div> <div>可见</div> <div class="visiable">不可见</div> <div class="visiable">不可见</div> <div class="visiable">不可见</div> <div>可见</div> <input type="hidden" value="hidden1" /> <input type="hidden" value="hidden2" /> <input type="hidden" value="hidden3" /> </body> <script language="JavaScript"> //一、改变全部可见的div的背景色 $("#b1").click(function(){ $("div:visible").css("background-color", "yellow"); $("div").show(); }); //二、选取全部不可见div的元素并将他们显示出来 $("#b2").click(function(){ $("div:hidden").show(); }); //三、选取全部的文本影藏,输出值 $("#b3").click(function(){ var $inputHid=$("input:hidden"); /** * * @param {Object} 每次遍历的索引 * @param {Object} domEle */ $inputHid.each(function(index,domEle){ //jquery中的方法 //alert($(this).val()); //alert(index); //alert(domEle.value) alert($(domEle).val()); }); }); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AttributeFilter_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="改变含有属性title的div" id="b1" /> <input type="button" value="改变不含属性title的div" id="b2" /> <input type="button" value="属性title等于test的div元素" id="b3" /> <input type="button" value="属性title不等于test的div元素" id="b4" /> <input type="button" value="含有title可是title!=test" id="b5" /> <input type="button" value="属性title是以te开头的div元素" id="b6" /> <input type="button" value="属性title是以est结尾的div元素" id="b7" /> <input type="button" value="属性title包括es的div元素" id="b8" /> <input type="button" value="选取有属性id的div元素 然后在结果中选取属性title值含有es的div元素" id="b9" /> <div title="test01"> div title=test01</div> <div> div </div> <div title="test"> div title=test</div> <div title="test" id="1"> div title=test</div> <div> div</div> <div title="01" id="1"> div title=01</div> <div title="01est" id="1"> div title=01est</div> </body> <script language="JavaScript"> //一、改变含有属性title的div $("#b1").click(function(){ $("div[title]").css("background-color", "yellow"); }); //二、改变不含属性title的div $("#b2").click(function(){ $("div:not([title])").css("background-color", "yellow"); }); //三、属性title等于test的div元素 $("#b3").click(function(){ $("div[title='test']").css("background-color", "yellow"); }); //四、属性title不等于test的div元素 不含title或者含有title但不等于test的 $("#b4").click(function(){ $("div[title!='test']").css("background-color", "yellow"); }); //五、含有title可是title!=test $("#b5").click(function(){ $("div[title][title!=test]").css("background-color", "yellow"); }); //六、属性title是以te开头的div元素 $("#b6").click(function(){ $("div[title^=te]").css("background-color", "yellow"); }); //七、属性title是以est结尾的div元素 $("#b7").click(function(){ $("div[title$=est]").css("background-color", "yellow"); }); //八、属性title包括es的div元素 $("#b8").click(function(){ $("div[title*=es]").css("background-color", "yellow"); }); //九、选取有属性id的div元素 然后在结果中选取属性title值含有es的div元素 $("#b9").click(function(){ $("div[id][title*='es']").css("background-color", "yellow"); }); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AttributeFilter_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="每一个class为one的div父元素下的第二个子元素" id="b1" /> <input type="button" value="每一个class为one的div父元素下的第1个子元素" id="b2" /> <input type="button" value="每一个class为one的div父元素下的最后一个子元素" id="b3" /> <input type="button" value="找到class为one的且仅仅有一个子元素的div" id="b4" /> <input type="button" value="含有title可是title!=test" id="b5" /> <input type="button" value="属性title是以te开头的div元素" id="b6" /> <input type="button" value="属性title是以est结尾的div元素" id="b7" /> <input type="button" value="属性title包括es的div元素" id="b8" /> <input type="button" value="选取有属性id的div元素 然后在结果中选取属性title值含有es的div元素" id="b9" /> <div class="one"> div1 <font>one</font> <font>two</font> <font>three</font></div> <div class="one"> div2 <font>one</font></div> <div class="one"> div3 <font>one</font></div> <div class="one"> div4</div> <div class="one"> div5</div> <div class="one1"> div5 <font>one</font> <font>two</font></div> </body> <script language="JavaScript"> //一、每一个class为one的div父元素下的第2个子元素 $("#b1").click(function(){ $("div[class='one'] :nth-child(2)").css("background-color", "yellow"); }); //二、每一个class为one的div父元素下的第1个子元素 /*法一 $("#b2").click(function(){ $("div[class='one'] :nth-child(1)").css("background-color", "yellow"); }); */ //法二 $("#b2").click(function(){ $("div[class='one'] :first-child").css("background-color", "yellow"); }); //三、每一个class为one的div父元素下的最后一个子元素 $("#b3").click(function(){ $("div[class='one'] :last-child").css("background-color", "yellow"); }); //四、找到class为one的且仅仅有一个子元素的div $("#b4").click(function(){ $("div[class='one'] :only-child").css("background-color", "yellow"); }); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AttributeFilter_selecter.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="取出可用的input" id="b1" /> <input type="button" value="取出不可用的input" id="b2" /> <input type="button" value="利用jquery的length属性获取多选框选中的个数" id="b3" /> <input type="button" value="输出被选中的多选框的值" id="b4" /> <input type="button" value="用jquery的text方法获取下拉选的结果" id="b5" /> <input type="text" value="可用" /> <input type="text" value="不可用" disabled="true" /> <input type="text" value="不可用" disabled="true" /> <input type="text" value="可用" /> <input type="text" value="可用" /> <input type="checkbox" name="lang" value="java"/>java <input type="checkbox" name="lang" value="c"/>c <input type="checkbox" name="lang" value="c#"/>c# <select name=""> <option value="">--请选择--</option> <option value="选项一">选项一</option> <option value="选项二">选项二</option> <option value="选项三">选项三</option> </select> </body> <script language="JavaScript"> //一、取出可用的input $("#b1").click(function(){ $("input[type='text']:enabled").val("xxxxxxxxxxxx"); }) //二、取出不可用的input $("#b2").click(function(){ $("input[type='text']:disabled").val("xxxxxxxxxxxx"); }) //三、利用jquery的length属性获取多选框选中的个数 $("#b3").click(function(){ var len=$("input[type='checkbox']:checked").length; alert(len); }) //四、输出被选中的多选框的值 $("#b4").click(function(){ $.each($("input[type='checkbox']:checked"),function(index, domEle){ alert($(domEle).val()); }); }) //五、用jquery的text方法获取下拉选的结果 $("#b5").click(function(){ var val=$("select option:selected").text(); alert(val); }) </script> </html>
append(content) :向每一个匹配的元素的内部的结尾处追加内容
appendTo(content) :将每一个匹配的元素追加到指定的元素中的内部结尾处
prepend(content):向每一个匹配的元素的内部的開始处插入内容
prependTo(content) :将每一个匹配的元素插入到指定的元素内部的開始处
案例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>inner_insert.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="反恐放到重庆后" id="b1" /> <input type="button" value="反恐放到重庆后" id="b2" /> <input type="button" value="反恐放到city第一位" id="b3" /> <input type="button" value="反恐放到city第一位" id="b4" /> <br> 您喜欢的城市:<br> <ul id="city"> <li id="bj" value="beijing">北京</li> <li id="sh" value="shanghai">上海</li> <li id="cq" value="chongqing">重庆</li> </ul> 您喜欢的游戏:<br> <ul id="love"> <li id="ms" value="moshou">魔兽</li> <li id="fk" value="fankong">反恐</li> </ul> </body> <script language="JavaScript"> //一、反恐放到重庆后 $("#b1").click(function(){ $("#city").append($("#fk")); }) //二、反恐放到重庆后 $("#b2").click(function(){ $("#fk").appendTo("#city"); }) //三、反恐放到city第一位 $("#b3").click(function(){ $("#city").prepend($("#fk")); }) //四、反恐放到city第一位 $("#b4").click(function(){ $("#fk").prependTo("#city"); }) </script> </html>
after(content):在每一个匹配的元素之后插入内容
before(content):在每一个匹配的元素之前插入内容
insertAfter(content):把全部匹配的元素插入到还有一个、指定的元素元素集合的后面
insertBefore(content) :把全部匹配的元素插入到还有一个、指定的元素元素集合的前面以上方法不但能将新创建的 DOM 元素插入到
档中, 也能对原有的 DOM 元素进行移动.
案例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>outer_insert.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="将p2移动到重庆后" id="b1" /> <input type="button" value="将p2移动到北京之前" id="b2" /> <input type="button" value="将p2移动到重庆后" id="b3" /> <input type="button" value="将p2移动到北京之前" id="b4" /> <br> 您喜欢的城市:<br> <ul id="city"> <li id="bj" value="beijing">北京</li> <li id="sh" value="shanghai">上海</li> <li id="cq" value="chongqing">重庆</li> </ul> <p id="p3">p3</p> <p id="p2">p2</p> <p id="p1">p1</p> </body> <script language="JavaScript"> //一、after 将p2移动到重庆后 $("#b1").click(function(){ $("#city").after($("#p2")); }) //二、将p2移动到北京之前 $("#b2").click(function(){ $("#city").before($("#p2")); }) //三、after 将p2移动到重庆后 $("#b3").click(function(){ $("#p2").insertAfter($("#city")); }) //四、将p2移动到北京之前 $("#b4").click(function(){ $("#p2").insertBefore("#city"); }) </script> </html>
查找属性节点: 通过 jQuery 选择器完毕.
查找属性节点: 查找到所须要的元素之后, 能够调用 jQuery 对象的 attr() 方法来获取它的各种属性值
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>geAttri.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="创建上海节点并追加到天津后面" id="b2" /> <br> <ul id="city"> <li id="bj" name="beijing">北京</li> <li id="tj" name="tianjing">天津</li> </ul> </body> <script language="JavaScript"> //二、创建上海节点并追加到天津后面 $("#b2").click(function(){ var $shEle=$("<li id='sh' name='shanghai'>上海</li>"); $("#city").append($shEle); //加入大连 var $dlEle=$("<li></li>"); $dlEle.attr("id", "dl"); $dlEle.attr("name", "dalian"); $dlEle.text("大连"); $("#city").append($dlEle); }) //三、 </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>geAttri.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <input type="button" value="删除北京节点 " id="b1" /> <input type="button" value="清除city下全部节点 " id="b2" /> <br> <ul id="city"> <li id="bj" name="beijing">北京 <font>font</font></li> <li id="tj" name="tianjing">天津</li> </ul> <p>hello</p> how ara <p>you</p> </body> <script language="JavaScript"> //一、删除北京节点 $("#b1").click(function(){ $("#bj").remove(); }) //二、清除city下全部节点 $("#b2").click(function(){ $("#city").empty(); alert($("#city").attr("id")); }) </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>clone.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <button>保存</button><br><br><br> <p>段落</p> </body> <script language="JavaScript"> $("button").click(function(){ alert(1); }) //克隆button并追加到P上 但事件不克隆 //$("button").clone().appendTo($("p")); //克隆button并追加到P上 克隆事件 $("button").clone(true).appendTo($("p")); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>replce.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> <button>保存</button><br><br><br> <p>段落</p> <p>段落</p> <p>段落</p> </body> <script language="JavaScript"> $("button").click(function(){ alert(1); }) //用p替换button //$("p").replaceWith($("<button>保存</button>")); //$("p").replaceWith($("button")); $("<button>保存</button>").replaceAll($("p")); </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>check.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> </head> <body> 您的爱好: <br> <input type="checkbox" name="checkItems" id="checkItems" value="全选/全不选" />全选/全不选 <br> <input type="checkbox" name="itmes" value="足球" />足球 <input type="checkbox" name="itmes" value="篮球" />篮球 <input type="checkbox" name="itmes" value="游泳" />游泳 <input type="checkbox" name="itmes" value="唱歌" />唱歌 <br> <input type="button" name="checkall" id="checkall" value="全选" /> <input type="button" name="checkall" id="checkallNo" value="全不选" /> <input type="button" name="checkall" id="checkRevese" value="反选" /> </body> <script language="JavaScript"> //<input type="button" name="checkall" id="checkall" value="全选" /> $("#checkall").click(function(){ $("input[type='checkbox']").attr("checked", "checked"); }) //<input type="button" name="checkall" id="checkallNo" value="全不选" /> $("#checkallNo").click(function(){ $("input[type='checkbox']").removeAttr("checked"); }) //<input type="button" name="checkall" id="checkRevese" value="反选" /> $("#checkRevese").click(function(){ $("input[name='itmes']").each(function(index, domEle){ if ($(domEle).attr("checked")){ $(domEle).removeAttr("checked"); }else{ $(domEle).attr("checked", "true"); } }) }) //<input type="checkbox" name="checkItems" id="checkItems" value="全选/全不选" />全选/全不选 $("#checkItems").change(function(){ if($(this).attr("checked")){ $("input:[name='itmes']").attr("checked", "checked"); }else{ $("input:[name='itmes']").removeAttr("checked"); } }) </script> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>class.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="../jquery/jquery-1.4.2.js"></script> <style type="text/css"> #one{ font-size:12px; height:130px; width:130px; border:1px solid; } .mini{ background-color:red; } </style> </head> <body> <div id="one">div1</div> <input type="button" value="使用attr来改变背景色" id="b1" /><br> <input type="button" value="追加样式" id="b2" /><br> <input type="button" value="移除样式" id="b3" /><br> <input type="button" value="切换样式" id="b4" /><br> <input type="button" value="推断是否含有某个样式" id="b5" /><br> </body> <script language="JavaScript"> //使用attr来改变背景色 $("#b1").click(function(){ $("#one").attr("class", "mini"); }) //追加样式 $("#b2").click(function(){ $("#one").addClass("mini"); }) //移除样式 $("#b3").click(function(){ $("#one").removeClass("mini"); }) //切换样式 $("#b4").click(function(){ $("#one").toggleClass("mini"); }) //推断是否含有某个样式 $("#b5").click(function(){ alert($("#one").hasClass("mini")); }) </script> </html>
jquery表单验证 默认的提示
表单验证:
调用jquery.validate({});方法进行验证
$("#empForm").validate({
* //自己定义验证规则
* //自己定义提示信息
})
这里的採用的都是标签的name属性值,而不是依据标签的id操作的
比方:<input type="text" id="realNames" name="realname" />,定义规则的时候採用的name属性,这个原因非常easy的,由于我们知道id是唯一的,可是对于后面的radio标签的时候我们想要定义规则的时候,假设要是用id来操作的话,就不行了,name属性是能够多个的,所以使用name
realname:"required",事实上这个required是一个函数,我们能够查看jquery插件的源代码:
后面的都是类似的,都能够在源码中找到
当然一个标签也能够定义多个规则:
username: {这里的required:true的功能和上面的的realname那种方式是一样的,同一时候minlength和maxlength都是方法的,源代码例如以下:
我们须要传递一个參数值,然后进行推断的,这个后面我们会在自己定义的方法中具体说明
这个作用就是给上面的校验规则中定义相相应的说明提示
这里面的提示信息,假设未定义的话,会默认使用源代码中的提示信息:
自己定义校验规则能够通过自己定义检验函数的方式新添加校验规则
过程例如以下:
1. 在定义校验规则之前定义一个新的方法
2. 在rules中指定某个域使用此校验规则
3. 在messages中指定这个域使用此校验规则没有通过的提示
信息
案例:
$.validator.addMethod("checkId",function(value,element,params){ if (value.length!= 15 && value.length!=18){ return false; } if (value.length==15){ var patten=/^\d{15}$/; if (!patten.test(value)){ return false; } } if (value.length==18){ patten=/^\d{18}|\d{17}[X]{1}$/; if (!patten.test(value)){ return false; } } return true; }, "身份证不对")
调用:
cert:{ required:true, checkId:"4" }我们在使用checkId方法的时候
value:元素的值
element 元素本身
params 參数
当中value就相应标签name为cert标签的value值,element就是这个标签,params就是传递的參数:4
以下来看一下完整的一个校验的Demo:
<span style="font-size:14px;"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>emp.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script language="JavaScript" src="./jquery-1.4.2.js"></script> <script language="JavaScript" src="./jquery.validate.js"></script> <script language="JavaScript"> // 添加方法的名称 // 函数function // *value:元素的值 // *element 元素本身 // *params 參数 //调用 /** * cert:{ * required:true, * checkId:"4" * } * * 返回值是false * */ $.validator.addMethod("checkId",function(value,element,params){ if (value.length!= 15 && value.length!=18){ return false; } if (value.length==15){ var patten=/^\d{15}$/; if (!patten.test(value)){ return false; } } if (value.length==18){ patten=/^\d{18}|\d{17}[X]{1}$/; if (!patten.test(value)){ return false; } } return true; }, "身份证不对") $(document).ready(function(){ //这种方法纯粹是对向window.load事件注冊事件的替代方法 $("#empForm").validate({ //验证规则 //使用的是组件的name属性值,而不是id属性值 比方radio 仅仅能通过name来确定了 //jquery 在运行验证时,利用lable显示错误提示信息 /* * required:表示组件的输入值不能为空 * */ rules:{ //required:在插件源代码中查看函数 realName:"required", username: { required:true, minlength:"5", maxlength:"8" }, pwd1:{ required:true, minlength:"6", maxlength:"12" }, pwd2:{ required:true, minlength:"6", maxlength:"12", equalTo:"#pwd1" }, sex:{ required:true }, age:{ required:true, range:[26,55] }, edu:{ required:true }, birthday:{ required:true, dateISO:true }, like:{ required:true }, email:{ required:true, email:true }, id:{ checkId:["4"] } }, //显示验证出错提示信息 //在插件源代码中有默认值的 messages:{ realName:"您的真实姓名不能为空", username:{ required:"您的username不能为空", minlength:"username不能小于5个字符", maxlength:"username不能大于8个字符" }, pwd1:{ required:"您的password不能为空", minlength:"username不能小于6个字符", maxlength:"username不能大于12个字符" }, pwd2:{ required:"确认password不能为空", minlength:"username不能小于6个字符", maxlength:"username不能大于12个字符", equalTo:"两次输入不一致" }, age:{ required:"请输入您的年龄", range:"请输入合法年龄" }, edu:{ required:"请选择您的学历" }, birthday:{ required:"请输入您的生日", dateISO:"日期格式不对" }, email:{ required:"请输入您的邮箱", email:"电子邮箱错误" } } }); }) </script> </head> <body> 员工信息录入<br> <form id="empForm" name="empForm" method="post"> <table border="1" cellpadding="0"> <tr> <td>真实姓名(不能为空)</td> <td><input type="text" id="realName" name="realName" /></td> </tr> <tr> <td>username(不能为空,长度在5~8之间,能够包括中文字符(一个汉字算一个字符))</td> <td><input type="text" id="username" name="username" /></td> </tr> <tr> <td>password(不能为空,6-12位字符或者数字,不能包括中文字母)</td> <td><input type="password" id="pwd1" name="pwd1"/></td> </tr> <tr> <td>反复password(不能为空,6-12位字符或者数字,不能包括中文字母)</td> <td><input type="password" id="pwd2" name="pwd2" /></td> </tr> <tr> <!-- jquery运行验证时,利用label标签显示错误提示信息 <lable style="display:none" for="gender" class="error">请选择性别</lable> * for="gender" 该标签的唯一标识 * style:设置标签的为不可见 * class="error":error:错误信息,用户error这个样式表修饰 <input type="radio" id="gender_male" value="m" name="gender"/> 运行: *jquery运行时先以组件中name属性的值为标识去查找lable标签 * 假设找到直接使用 * 假设没有找到 创建一个 底层代码: errorClass:"error" --class="error" errorElement:"lable" --<lable> lable=$("<"+this.settings.errorElement+"/>") --<lable> .attr({"for":this.idOrName(element),generated:true}) --<lable for> .addClass(this.settings.errorClass) --<label for class="error">messages</lable> .html(message || ""); --> <td>性别</td> <td><input type="radio" name="sex" value="man" id="gender_male" />男<input id="gender_feimale" type="radio" name="sex" value="woman" />女<label style="display: none" for="sex" class="error">请选择性别</label></td> </tr> <tr> <td>年龄(26~55)</td> <td><input type="text" id="age" name="age" /></td> </tr> <tr> <td>学历</td> <td> <select id="edu" name="edu"> <option value="">--请选择您的学历--</option> <option value="benke">本科</option> <option value="zhuanke">专科</option> <option value="yanjiusheng">研究生</option> </select> </td> </tr> <tr> <td>出生日期(1999/09/19)</td> <td><input type="text" id="birthday" name="birthday" /></td> </tr> <tr> <td>情趣爱好</td> <td><input type="checkbox" id="check1" name="like" />乒乓球<input type="checkbox" name="like" id="check1" />上网<input type="checkbox" name="like" id="check1" />code<label style="display: none" for="like" class="error">必须选择一个爱好</label></td> </tr> <tr> <td>电子邮箱</td> <td><input type="text" id="email" name="email" /></td> </tr> <tr> <td>身份证(15或18位)</td> <td><input type="text" id="id" name="id" /></td> </tr> <tr> <td></td> <td></td> <td><input type="submit" value="保存" id="ok"></td> </tr> </table> </form> </body> </html> </span>我们注意到Demo中有一个特别的地方就是那个性别的标签,源代码中一般都是在一个标签后面自己主动使用lable标签来显示提示信息的,可是我们这里面不能使用默认的,不然这个默认的lable标签,看一下效果图:
以下的图是正常操作显示的:
插入的lable在第一个<input type="radio"...标签后面,并且提示信息是默认的,事实上系统的这个默认的lable的产生原理,在代码中的凝视说的非常清楚了,就是自己主动生成一个lable标签,然后将提示信息加入进去就可以。
jQuery主要是封装了Ajax的一些方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,假设要处理复杂的逻辑,还是须要用到jQuery.ajax()的(这个后面会说到).
load( url, [data], [callback] ) :加载远程HTML 文件代码并插入至 DOM 中。
url(String) : 请求的HTML页的URL地址。
data(Map) : (可选參数) 发送至server的 key/value 数据。(json格式)
callback(Callback) : (可选參数) 请求完毕时(不须要是success的)的回调函数。
我们看到,方法中的三个參数仅仅有第一个參数url是必选的,其它都是可选的,所以这种方法是有重载的形式的
回调函数的參数说明:
回调函数function(date,textStatus,xmlRequest):和Ajax中的函数一样的
1) data 代表请求返回的内容
2) textStatus 代表请求状态的对象
3) XMLHttpRequest 对象
这种方法默认使用 GET 方式来传递的,假设[data]參数有传递数据进去,就会自己主动转换为POST方式的。jQuery 1.2 中,能够指定选择符,来筛选加载的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some >selector"。
这种方法能够非常方便的动态载入一些HTML文件,比如表单。
演示样例代码:
<span style="font-size:14px;">$("#one").load("load.jsp",{username:$("#username").val(),pwd:$("#pwd").val()},function(data, textStatus, xmlHttpReq){ alert(data); })</span>
以下是訪问的load.jsp内容:
<span style="font-size:14px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% out.println("你好"); String username=request.getParameter("username"); String pwd=request.getParameter("pwd"); System.out.println(username); System.out.println(pwd); System.out.println(request.getMethod()); %> <!-- h1标签内容 --> <h1>H1</h1> <!-- h2标签内容 --> <h2>H2</h2></span>我们在之前介绍jsp的时候说过,事实上我们看到这个jsp会输出“你好”,同一时候也会输出后面的标签内容,由于jsp引擎会将其翻译成servlet
我们訪问:
http://localhost:8080/ajax/load/load.html
显示结果:
将请求到的html内容载入到one标签中进行显示
以下在来看一下另外的一种形式:
$("#one").load("load.jsp h1",{username:$("#username").val(),pwd:$("#pwd").val()},function(data, textStatus, xmlHttpReq){ alert(data); })我们看到第一个參数中在请求的load.jsp后面另一个空格然后跟着一个h1标签,显示的结果:
我们看到这个内容是h1的内容,我们看到load.jsp中会返回一个h1标签,将h1标签中内容进行显示,那个load.jsp后面跟着的是h1标签,所以显示的是load.jsp返回的h1标签的内容。
事实上我们通过上面的样例能够看到load的方式最大的作用就是将请求一段html代码,然后载入到指定的标签中。
jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求
參数:
url(String) : 发送请求的URL地址.
data(Map) : (可选) 要发送给server的数据,以 Key/value 的键值对形式表示(json格式),会做为QueryString附加到请求URL中。
callback(Function) : (可选) 加载成功时回调函数(仅仅有当Response的返回状态是success才是调用该方法)。
回调函数的參数说明:
回调函数function(date,textStatus,xmlRequest):和Ajax中的函数一样的
1) data 代表请求返回的内容
2) textStatus 代表请求状态的对象
3) XMLHttpRequest 对象
我们看到这个三个參数中第一个參数是必选的,其它的都是可选的
看一下案例:
$("#b1").click(function(){ $.get("get.jsp", {username:$("#username").val(),pwd:$("#pwd").val()},function(data,textStatus){ $("#one").html(data); alert(textStatus); }); });
当中get.jsp的内容和上面的load.jsp内容是一样的
这里面的作用就是将请求到的内容载入到指定标签中
jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求
參数:
url(String) : 发送请求的URL地址.
data(Map) : (可选) 要发送给server的数据,以 Key/value 的键值对形式表示(json格式)。
callback(Function) : (可选) 加载成功时回调函数(仅仅有当Response的返回状态是success才是调用该方法)。
回调函数的參数说明:
回调函数function(date,textStatus,xmlRequest):和Ajax中的函数一样的
1) data 代表请求返回的内容
2) textStatus 代表请求状态的对象
3) XMLHttpRequest 对象
type (String) : (可选)官方的说明是:Type of data to be sent。事实上应该为client请求的类型(JSON,XML,等等)
这是一个简单的 POST 请求功能以代替复杂 $.ajax 。请求成功时可调用回调函数。假设须要在出错时运行函数,请使用$.ajax。
第一个參数是必选的,其它都是可选的
演示样例代码:
$("#b1").click(function(){ var xmlReq=$.post("get.jsp",{username:$("#username").val(),pwd:$("#pwd").val()},function(data,textStatus){ $("#one").html(data); alert(textStatus); }); alert(xmlReq.readyState); alert(xmlReq.status) });
jQuery.getScript( url, [callback] ) : 通过GET 方式请求加载并运行一个 JavaScript 文件。
參数
url(String) : 待加载 JS 文件地址。
callback(Function) : (可选) 成功加载后回调函数。
jQuery1.2 版本号之前,getScript仅仅能调用同域 JS 文件。 1.2中,您能够跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本号不能在全局作用域中同步运行脚本。假设通过 getScript增加脚本,请增加延时函数。
这种方法能够用在比如当仅仅有编辑器focus()的时候才去载入编辑器须要的JS文件.以下看一些演示样例代码:
载入并运行 test.js。
jQuery 代码:
$.getScript("test.js");
载入并运行 test.js ,成功后显示信息。
jQuery 代码:
$.getScript("test.js", function(){ alert("AjaxEvent.js 载入完毕并运行完毕.你再点击上面的Get或Postbutton看看有什么不同?"); });
Ajax请求会产生若干不同的事件,我们能够订阅这些事件并在当中处理我们的逻辑。在jQuery这里有两种Ajax事件:局部事件 和 全局事件。
局部事件就是在每次的Ajax请求时在方法内定义的,比如:
$.ajax({ beforeSend: function(){ //Handle the beforeSend event }, complete: function(){ //Handle the complete event } //... });
全局事件是每次的Ajax请求都会触发的,它会向DOM中的全部元素广播,在上面 getScript() 演示样例中载入的脚本就是全局Ajax事件。全局事件能够例如以下定义:
$("#loading").bind("ajaxSend", function(){ $(this).show(); }).bind("ajaxComplete",function(){ $(this).hide(); });
或者:
$("#loading").ajaxStart(function(){ $(this).show(); });
我们能够在特定的请求将全局事件禁用,仅仅要设置下 global 选项就能够了:
$.ajax({ url: "test.html", global: false,// 禁用全局Ajax事件. // ... });
以下是jQuery官方给出的完整的Ajax事件列表:
ajaxStart(Global Event)
This event is broadcast if an Ajax request is started and no other Ajaxrequests are currently running.
beforeSend(Local Event)
This event, which is triggered before an Ajax request is started, allows you tomodify the XMLHttpRequest object (setting additional headers, if need be.)
ajaxSend(Global Event)
This global event is also triggered before the request is run.
success(Local Event)
This event is only called if the request was successful (no errors from theserver, no errors with the data).
ajaxSuccess(Global Event)
This event is also only called if the request was successful.
error(Local Event)
This event is only called if an error occurred with the request (you can neverhave both an error and a success callback with a request).
ajaxError(Global Event)
This global event behaves the same as the local error event.
complete(Local Event)
This event is called regardless of if the request was successful, or not. Youwill always receive a complete callback, even for synchronous requests.
ajaxComplete(Global Event)
This event behaves the same as the complete event and will be triggered everytime an Ajax request finishes.
ajaxStop(Global Event)
This global event is triggered if there are no more Ajax requests beingprocessed.
好了,以下開始说jQuery里面功能最强的Ajax请求方法 $.ajax();
jQuery.ajax( options ) : 通过HTTP 请求载入远程数据
这个是jQuery 的底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。
$.ajax()返回其创建的 XMLHttpRequest对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。
注意: 假设你指定了 dataType 选项,请确保server返回正确的 MIME 信息,(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。
当设置 datatype 类型为 'script' 的时候,全部的远程(不在同一个域中)POST请求都会转换为GET方式。
$.ajax()仅仅有一个參数:參数key/value 对象(json对象),包括各配置及回调函数信息。具体參数选项见下。
jQuery1.2 中,您能够跨域载入 JSON数据,使用时需将数据类型设置为 JSONP。使用JSONP 形式调用函数时,如"myurl?callback=?" jQuery 将自己主动替换 ? 为正确的函数名,以运行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自己主动调用回调函数。
參数列表:
參数名 |
类型 |
描写叙述 |
url |
String |
(默认: 当前页地址) 发送请求的地址。 |
type |
String |
(默认: "GET") 请求方式 ("POST" 或 "GET"), 默觉得 "GET"。注意:其他 HTTP 请求方法,如 PUT 和 DELETE 也能够使用,但仅部分浏览器支持。 |
timeout |
Number |
设置请求超时时间(毫秒)。此设置将覆盖全局设置。 |
async |
Boolean |
(默认: true) 默认设置下,全部请求均为异步请求。假设须要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其他操作必须等待 请求完毕才干够运行。 |
beforeSend |
Function |
发送请求前可改动 XMLHttpRequest 对象的函数,如加入自己定义 HTTP 头。XMLHttpRequest 对象是唯一的參数。 this; // the options for this ajax request } |
cache |
Boolean |
(默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中载入请求信息。 |
complete |
Function |
请求完毕后回调函数 (请求成功或失败时均调用)。參数: XMLHttpRequest 对象,成功信息字符串。 this; // the options for this ajax request } |
contentType |
String |
(默认: "application/x-www-form-urlencoded") 发送信息至server时内容编码类型。默认值适合大多数应用场合。 |
data |
Object, |
发送到server的数据。将自己主动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自己主动转换。必须为 Key/Value 格 式。假设为数组,jQuery 将自己主动为不同值相应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。 |
dataType |
String |
预期server返回的数据类型。假设不指定,jQuery 将自己主动依据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数參数传递,可用值: "xml": 返回 XML 文档,可用 jQuery 处理。 "html": 返回纯文本 HTML 信息;包括 script 元素。 "script": 返回纯文本 JavaScript 代码。不会自己主动缓存结果。 "json": 返回 JSON 数据 。 "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自己主动替换 ? 为正确的函数名,以运行回调函数。 |
error |
Function |
(默认: 自己主动推断 (xml 或 html)) 请求失败时将调用此方法。这种方法有三个參数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。 // 通常情况下textStatus和errorThown仅仅有当中一个有值 this; // the options for this ajax request } |
global |
Boolean |
(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件 |
ifModified |
Boolean |
(默认: false) 仅在server数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息推断。 |
processData |
Boolean |
(默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并不是字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。假设要发送 DOM 树信息或其他不希望转换的信息,请设置为 false。 |
success |
Function |
请求成功后回调函数。这种方法有两个參数:server返回数据,返回状态 // data could be xmlDoc, jsonObj, html, text, etc... this; // the options for this ajax request } |
这里有几个Ajax事件參数:beforeSend,success,complete ,error 。我们能够定义这些事件来非常好的处理我们的每一次的Ajax请求。注意一下,这些Ajax事件里面的 this 都是指向Ajax请求的选项信息的(请參考说 get() 方法时的this的图片)。
请认真阅读上面的參数列表,假设你要用jQuery来进行Ajax开发,那么这些參数你都必需熟知的。
总结:jquery还有非常多的内容这里就没有具体的介绍了,这个仅仅有在后面的开发过程中慢慢的学习和总结,上面的样例的Demo下载地址是:
http://download.csdn.net/detail/jiangwei0910410003/7514949
里面除了上面的样例另一些综合的案例演示