前面我们解说了的J2EE的技术都是服务端的技术,以下我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术
简单介绍:
jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多
javascript高手增加其team。
jQuery是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做很多其它的事情。
它是轻量级的js库(压缩后仅仅有21k) ,这是其他的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。
jQuery是一个高速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,而且方便地为站点提供AJAX交互。
jQuery另一个比較大的优势是,它的文档说明非常全,并且各种应用也说得非常具体,同一时候还有很多成熟的插件可供选择。
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 对象就是通过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对象转化成jQuery对象
对于已经是一个DOM对象,仅仅须要用$()把DOM对象包装起来,就能够获得一个jQuery对象了。$(DOM对象)
转换后就能够使用 jQuery 中的方法了
jQuery对象转化成DOM对象
两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index);
(1) jQuery对象是一个数组对象,能够通过[index]的方法,来得到对应的DOM对象
(2) jQuery本身提供,通过.get(index)方法,得到对应的DOM对象
jQuery选择器
选择器是 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处理即使不存在也不会报错
var $username=$("#username");
alert("^^^ "+$username.val());
//注意:在javaScript中函数返回值为空,表示false
基本选择器:
基本选择器是 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 元素, 该选择器都以 “:” 开头
依照不同的过滤规则, 过滤选择器能够分为基本过滤, 内容过滤, 可见性过滤, 属性过滤, 子元素过滤和表单对象属性过滤选择器.
基础过滤选择器:
使用方法: $(”tr:first”) ; 返回值 单个元素的组成的集合
说明: 匹配找到的第一个元素
2、:last
使用方法: $(”tr:last”) 返回值 集合元素
说明: 匹配找到的最后一个元素.与 :first 相相应.
3、:not(selector)
使用方法: $(”input:not(:checked)”)返回值 集合元素
说明: 去除全部与给定选择器匹配的元素.有点类似于”非”,意思是没有被选中的input(当input的type=”checkbox”).
4、:even
使用方法: $(”tr:even”) 返回值 集合元素
说明: 匹配全部索引值为偶数的元素,从 0 開始计数.js的数组都是从0開始计数的.比如要选择table中的行,由于是从0開始计数,所以table中的第一个tr就为偶数0.
5、: odd
使用方法: $(”tr:odd”) 返回值 集合元素
说明: 匹配全部索引值为奇数的元素,和:even相应,从 0 開始计数.
说明: 匹配一个给定索引值的元素.eq(0)就是获取第一个tr元素.括号中面的是索引值,不是元素排列数.
7、:gt(index) 使用方法: $(”tr:gt(0)”) 返回值 集合元素
说明: 匹配全部大于给定索引值的元素.
8、:lt(index) 使用方法: $(”tr:lt(2)”) 返回值 集合元素
说明: 匹配全部小于给定索引值的元素.
9、:header(固定写法) 使用方法: $(”:header”).css(”background”, “#EEE”) 返回值 集合元素
说明: 匹配如 h1, h2, h3之类的标题元素.这个是专门用来获取h1,h2这种标题元素.
10、:animated(固定写法) 返回值 集合元素
说明: 匹配全部正在运行动画效果的元素
改变最后一个 div 元素的背景色为 #0000FF
改变class不为 one 的全部 div 元素的背景色为 #0000FF
改变索引值为偶数的 div 元素的背景色为 #0000FF
改变索引值为奇数的 div 元素的背景色为 #0000FF
改变索引值为大于 3 的 div 元素的背景色为 #0000FF
改变索引值为等于 3 的 div 元素的背景色为 #0000FF
改变索引值为小于 3 的 div 元素的背景色为 #0000FF
改变全部的标题元素的背景色为 #0000FF
改变当前正在运行动画的全部元素的背景色为 #0000FF
<!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>
内容过滤选择器:
1、:contains(text) 使用方法: $(”div:contains(’John’)”) 返回值 集合元素
说明: 匹配包括给定文本的元素.这个选择器比較实用,当我们要选择的不是dom标签元素时,它就派上了用场了,它的作用是查找被标签”围”起来的文本内容是否符合指定的内容的.
2、:empty 使用方法: $(”td:empty”) 返回值 集合元素
说明: 匹配全部不包括子元素或者文本的空元素
3、:has(selector)
使用方法: $(”div:has(p)”).addClass(”test”) 返回值 集合元素
说明: 匹配含有选择器所匹配的元素的元素.这个解释须要好好琢磨,可是一旦看了使用的样例就全然清楚了:给全部包括p元素的div标签加上class=”test”.
4、:parent 使用方法: $(”td:parent”) 返回值 集合元素
说明: 匹配含有子元素或者文本的元素.注意:这里是”:parent”,可不是”.parent”哦!感觉与上面讲的”:empty”形成反义词.
改变不包括子元素(或者文本元素) 的 div 空元素的背景色为 #0000FF
改变含有 class 为 mini 元素的 div 元素的背景色为 #0000FF
改变含有子元素(或者文本元素)的div元素的背景色为 #0000FF
改变不含有文本 di; 的 div 元素的背景色
<!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>
可见度过滤选择器:
1、:hidden 使用方法: $(”tr:hidden”) 返回值 集合元素
说明: 匹配全部的不可见元素,input 元素的 type 属性为 “hidden” 的话也会被匹配到.意思是css中display:none和input type=”hidden”的都会被匹配到.相同,要在脑海中彻底分清楚冒号”:”, 点号”.”和逗号”,”的差别.
2、:visible 使用方法: $(”tr:visible”) 返回值 集合元素
说明: 匹配全部的可见元素.
选取全部不可见的元素, 利用 jQuery 中的 show() 方法将它们显示出来, 并设置其背景色为 #0000FF
选取全部的文本隐藏域, 并打印它们的值
<!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>
属性过滤选择器:
1、[attribute] 使用方法: $(”div[id]“) ; 返回值 集合元素
说明: 匹配包括给定属性的元素. 样例中是选取了全部带”id”属性的div标签.
2、[attribute=value] 使用方法: $(”input[name='newsletter']“).attr(”checked”, true); 返回值 集合元素
说明: 匹配给定的属性是某个特定值的元素.样例中选取了全部 name 属性是 newsletter 的 input 元素.
3、[attribute!=value] 使用方法: $(”input[name!='newsletter']“).attr(”checked”, true); 返回值 集合元素
说明: 匹配全部不含有指定的属性,或者属性不等于特定值的元素.此选择器等价于:not([attr=value]),要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value]).之前看到的 :not 派上了用场.
4、[attribute^=value] 使用方法: $(”input[name^=‘news’]“) 返回值 集合元素
说明: 匹配给定的属性是以某些值開始的元素.,我们又见到了这几个类似于正则匹配的符号.如今想忘都忘不掉了吧?!
说明: 匹配给定的属性是以某些值结尾的元素.
6、[attribute*=value] 使用方法: $(”input[name*=‘man’]“) 返回值 集合元素
说明: 匹配给定的属性是以包括某些值的元素.
7、[attributeFilter1][attributeFilter2][attributeFilterN] 使用方法: $(”input[id][name$=‘man’]“) 返回值 集合元素
说明: 复合属性选择器,须要同一时候满足多个条件时使用.又是一个组合,这样的情况我们实际使用的时候非经常常使用.这个样例中选择的是全部含有 id 属性,而且它的 name 属性是以 man 结尾的元素.
含有属性title 的div元素.
属性title值等于"test"的div元素.
属性title值不等于"test"的div元素(没有属性title的也将被选中).
属性title值 以"te"開始 的div元素.
属性title值 以"est"结束 的div元素.
属性title值 含有"es"的div元素.
选取有属性id的div元素,然后在结果中选取属性title值含有“es”的 div 元素
<!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>
子元素过滤选择器:
说明: 匹配其父元素下的第N个子或奇偶元素.这个选择器和之前说的基础过滤(Basic Filters)中的 eq() 有些类似,不同的地方就是前者是从0開始,后者是从1開始.
2、:first-child 使用方法: $(”ul li:first-child”) 返回值 集合元素
说明: 匹配第一个子元素.’:first’ 仅仅匹配一个元素,而此选择符将为每一个父元素匹配一个子元素.这里须要特别点的记忆下差别.
3、:last-child 使用方法: $(”ul li:last-child”) 返回值 集合元素
说明: 匹配最后一个子元素.’:last’仅仅匹配一个元素,而此选择符将为每一个父元素匹配一个子元素.
4、: only-child 使用方法: $(”ul li:only-child”) 返回值 集合元素
说明: 假设某个元素是父元素中唯一的子元素,那将会被匹配.假设父元素中含有其它元素,那将不会被匹配.意思就是:仅仅有一个子元素的才会被匹配!
(1):nth-child(even/odd): 能选取每一个父元素下的索引值为偶(奇)数的元素
(2):nth-child(2): 能选取每一个父元素下的索引值为 2 的元素
(3):nth-child(3n): 能选取每一个父元素下的索引值是 3 的倍数 的元素
(3):nth-child(3n + 1): 能选取每一个父元素下的索引值是 3n + 1的元素
每一个class为one的div父元素下的第2个子元素.
每一个class为one的div父元素下的第一个子元素
每一个class为one的div父元素下的最后一个子元素
假设class为one的div父元素下的只唯独一个子元素,那么选中这个子元素
<!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>
表单对象属性过滤选择器:
1、:enabled 使用方法: $(”input:enabled”) 返回值 集合元素
说明: 匹配全部可用元素.意思是查找全部input中不带有disabled=”disabled”的input.不为disabled,当然就为enabled啦.
2、:disabled 使用方法: $(”input:disabled”) 返回值 集合元素
说明: 匹配全部不可用元素.与上面的那个是相相应的.
3、:checked 使用方法: $(”input:checked”) 返回值 集合元素
说明: 匹配全部选中的被选中元素(复选框、单选框等,不包含select中的option).这话说起来有些绕口.
4、:selected 使用方法: $(”select option:selected”) 返回值 集合元素
说明: 匹配全部选中的option元素.
利用 jQuery 对象的 val() 方法改变表单内不可用 <input> 元素的值
利用 jQuery 对象的 length 属性获取多选框选中的个数
利用 jQuery 对象的 text() 方法获取下拉框选中的内容
<!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>
表单选择器:
说明:匹配全部 input, textarea, select 和 button 元素
2、:text 使用方法: $(”:text”) ; 返回值 集合元素
说明: 匹配全部的单行文本框.
3、:password 使用方法: $(”:password”) ; 返回值 集合元素
说明: 匹配全部password框.
4、:radio 使用方法: $(”:radio”) ; 返回值 集合元素
说明: 匹配全部单选button.
5、:checkbox 使用方法: $(”:checkbox”) ; 返回值 集合元素
说明: 匹配全部复选框
6、:submit 使用方法: $(”:submit”) ; 返回值 集合元素
说明: 匹配全部提交button.
说明: 匹配全部图像域.
8、:reset 使用方法: $(”:reset”) ; 返回值 集合元素
说明: 匹配全部重置button.
9、:button 使用方法: $(”:button”) ; 返回值 集合元素
说明: 匹配全部按钮.这个包含直接写的元素button.
10、:file 使用方法: $(”:file”) ; 返回值 集合元素
说明: 匹配全部文件域.
11、:hidden 使用方法: $(”input:hidden”) ; 返回值 集合元素
说明: 匹配全部不可见元素,或者type为hidden的元素.这个选择器就不仅限于表单了,除了匹配input中的hidden外,那些style为hidden的也会被匹配.
注意: 要选取input中为hidden值的方法就是上面样例的使用方法,可是直接使用 “:hidden” 的话就是匹配页面中全部的不可见元素,包含宽度或高度为0的,
jQuery中的DOM操作
DOM 操作的分类:
DOM Core: DOM Core 并不专属于 JavaScript, 不论什么一种支持 DOM 的程序设计语言都能够使用它. 它的用途并不是仅限于处理网页, 也能够用来处理不论什么一种是用标记语言编写出来的文档, 比如: XML
HTML DOM: 使用 JavaScript 和 DOM 为 HTML 文件编写脚本时, 有很多专属于 HTML-DOM 的属性
CSS-DOM:针对于 CSS 操作, 在 JavaScript 中, CSS-DOM 主要用于获取和设置 style 对象的各种属性
内部插入节点:
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() 方法来获取它的各种属性值
创建节点
注意:
动态创建的新元素节点不会被自己主动加入到文档中, 而是须要使用其它方法将其插入到文档中;
当创建单个元素时, 需注意闭合标签和使用标准的 XHTML 格式. 比如创建一个<p>元素, 能够使用 $(“<p/>”) 或 $(“<p></p>”), 但不能使用 $(“<p>”) 或 $(“</P>”)
创建文本节点就是在创建元素节点时直接把文本内容写出来; 创建属性节点也是在创建元素节点时一起创建
<!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>
删除节点:
empty(): 清空节点 – 清空元素中的全部后代节点(不包括属性节点).
<!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>
复制节点:
clone(true): 复制元素的同一时候也复制元素中的的事件
<!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>
替换节点:
replaceAll(): 颠倒了的 replaceWith() 方法.
注意: 若在替换之前, 已经在元素上绑定了事件, 替换后原先绑定的事件会与原先的元素一起消失
<!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>
属性操作:
当为该方法传递一个參数时, 即为某元素的获取指定属性
当为该方法传递两个參数时, 即为某元素设置指定属性的值
jQuery中有非常多方法都是一个函数实现获取和设置.如:attr(), html(), text(), val(),height(), width(), css() 等.
removeAttr(): 删除指定元素的指定属性
<!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>
样式操作:
追加样式: addClass()
移除样式: removeClass() --- 从匹配的元素中删除所有或指定的 class
切换样式: toggleClass() --- 控制样式上的反复切换.假设类名存在则删除它, 假设类名不存在则加入它.
推断是否含有某个样式: hasClass() --- 推断元素中是否含有某个 class, 假设有, 则返回 true; 否则返回 false
<!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>
设置和获取 HTML, 文本和值
读取和设置某个元素中的文本内容: text(). 该方法既能够用于 XHTML 也能够用于 XML 文档.
读取和设置某个元素中的值: val() --- 该方法类似 JavaScript 中的 value 属性. 对于文本框, 下拉列表框, 单选框该方法可返回元素的值(多选框仅仅能返回第一个值).假设为多选下拉列表框, 则返回一个包括全部选择值的数组
经常使用的遍历节点方法
取得匹配元素后面紧邻的同辈元素的集合:next();
取得匹配元素前面紧邻的同辈元素的集合:prev()
取得匹配元素前后全部的同辈元素: siblings()
CSS-DOM操作:
获取和设置元素透明度: opacity 属性
注:IE6,IE7不支持此属性,请使用Firefox1.5,或Opera9浏览
opacity:0.1
获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若仅仅传递数字, 则默认单位是 px. 如须要使用其它单位则需传递一个字符串, 比如 $(“p:first”).height(“2em”);
获取元素在当前视窗中的相对位移: offset(). 其返回对象包括了两个属性: top, left. 该方法仅仅对可见元素有效
em是相对长度单位。相对于当前对象内文本的字体尺寸
jQuery解析并载入XML
JQuery 解析 XML 与解析 DOM 一样, 能够使用 find(), children() 等函数来解析和用 each() 方法来进行遍历
jQuery中的事件
jQuery的表单验证
http://jquery.bassistance.de/validate/jquery.validate.zip
首页: http://bassistance.de/jquery-plugins/jquery-plugin-validation/
jQuery validation 1.7 ---验证插件 须要:jQuery 1.3.2 或 1.4.2版本号
jquery表单验证 默认的提示
表单验证:
调用jquery.validate({});方法进行验证
$("#empForm").validate({
* //自己定义验证规则
* //自己定义提示信息
})
jquery自己定义验证规则
这里的採用的都是标签的name属性值,而不是依据标签的id操作的
比方:<input type="text" id="realNames" name="realname" />,定义规则的时候採用的name属性,这个原因非常easy的,由于我们知道id是唯一的,可是对于后面的radio标签的时候我们想要定义规则的时候,假设要是用id来操作的话,就不行了,name属性是能够多个的,所以使用name
realname:"required",事实上这个required是一个函数,我们能够查看jquery插件的源代码:
后面的都是类似的,都能够在源码中找到
当然一个标签也能够定义多个规则:
username: {
required:true,
minlength:"5",
maxlength:"8"
}
这里的required:true的功能和上面的的realname那种方式是一样的,同一时候minlength和maxlength都是方法的,源代码例如以下:
我们须要传递一个參数值,然后进行推断的,这个后面我们会在自己定义的方法中具体说明
jQuery自己定义消息:
这个作用就是给上面的校验规则中定义相相应的说明提示
这里面的提示信息,假设未定义的话,会默认使用源代码中的提示信息:
jQuery的自己定义校验规则:
自己定义校验规则能够通过自己定义检验函数的方式新添加校验规则
过程例如以下:
1. 在定义校验规则之前定义一个新的方法
2. 在rules中指定某个域使用此校验规则
3. 在messages中指定这个域使用此校验规则没有通过的提示
信息
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标签,看一下效果图:
以下的图是正常操作显示的:
再来看一下使用系统的label:
插入的lable在第一个<input type="radio"...标签后面,并且提示信息是默认的,事实上系统的这个默认的lable的产生原理,在代码中的凝视说的非常清楚了,就是自己主动生成一个lable标签,然后将提示信息加入进去就可以。
jQuery中封装的Ajax请求
jQuery主要是封装了Ajax的一些方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,假设要处理复杂的逻辑,还是须要用到jQuery.ajax()的(这个后面会说到).
1.load方法
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代码,然后载入到指定的标签中。
2.get方法
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内容是一样的
这里面的作用就是将请求到的内容载入到指定标签中
3.post方法
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)
});
4.getScript方法
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看看有什么不同?");
});
5.jQuery Ajax 事件
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();
6.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 格 |
dataType |
String |
预期server返回的数据类型。假设不指定,jQuery 将自己主动依据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数參数传递,可用值: "xml": 返回 XML 文档,可用 jQuery 处理。 "html": 返回纯文本 HTML 信息;包括 script 元素。 "script": 返回纯文本 JavaScript 代码。不会自己主动缓存结果。 "json": 返回 JSON 数据 。 "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 |
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 |
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
里面除了上面的样例另一些综合的案例演示