一、JQuery简介
1.1简介
jQuery是继prototype之后又一个优秀的JavaScript库。它是轻量级的js库
,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。
jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
1.2优点
- (1)写少代码,做多事情【write less do more】
- (2)免费,开源且轻量级的js库,容量很小
- 注意:项目中,提倡引用min版的js库
- (3)兼容市面上主流浏览器,例如 IE,Firefox,Chrome
- 注意:jQuery不是将所有JS全部封装,只是有选择的封装
- (4)能够处理HTML/JSP/XML、CSS、DOM、事件、实现动画效果,也能提供异步AJAX功能
- (5)文档手册很全,很详细
- (6)成熟的插件可供选择
- (7)提倡对主要的html标签提供一个id属性,但不是必须的
- (8)出错后,有一定的提示信息
- (9)不用再在html里面通过<script>标签插入一大堆js来调用命令了
二、JQuery的九类选择器
使用jquery,首先我们需要去把jquery的包导入,这个jquery的官网上面是可以下载的,地址:https://jquery.com/,目前最新版本是3.0,一般会有两种版本的,一个是完全的,一个是迷你版本的,两个版本就是大小不一样,里面的实质性东西其实是一样的,而这个迷你版的适合项目正式上线使用,因为占的体积小啊,一般学习或者练习的话就可以尝试使用完全版的。下面以几个案例来实际说明jquery的使用,完整的代码会在文末提供下载链接,欢迎下载学习。选择器的部分在下载的文件中的/JQuery\WebRoot\selector目录下。
2.1 基本选择器
[javascript] view
plain copy
- //1)查找ID为"div1ID"的元素个数
- alert( $("#div1ID").size());
- //2)查找DIV元素的个数
- alert( $("div").length);
- //3)查找所有样式是"myClass"的元素的个数
- alert($(".myClass").size());
- //4)查找所有DIV,SPAN,P元素的个数
- alert($("div,span,p").size());
- //5)查找所有ID为div1ID,CLASS为myClass,P元素的个数
- alert($("#div1ID,.myClass,p").size());
2.2 层次选择器
[javascript] view
plain copy
- //1)找到表单form里所有的input元素的个数
- alert($("form input").size());
- //2)找到表单form下所有的子级input元素个数
- alert($(" form > input").size());
- //3)找到表单form同级第一个input元素的value属性值
- alert($("form + input").val());
- //4)找到所有与表单form同级的input元素个数
- alert($("form ~ input").size());
2.3 增强基本选择器
[javascript] view
plain copy
- //1)查找UL中第一个元素li的内容
- alert($("ul li:first").html());
- alert($("ul li:first").text());
- //html()要用在html/jsp中,不能用在xml中,而text()都可以用
- //2)查找UL中最后一个元素的内容
- alert($("ul li:last").text());
- //3)查找所有未选中的input元素个数
- alert($(":checkbox:checked").size()); //选中的 2
- alert($(":checkbox:not(:checked)").size()); //未选中
- //4)查找表格的1、3、5...奇数行个数
- alert($("table tr:odd").size()); //3
- //5)查找表格的2、4、6...偶数行个数
- alert($("table tr:even").size()); //3
- //6)查找表格中第二行的内容,从索引号0开始
- alert($("table tr:eq(1)").text());
- //html()强调的是标签中的内容,即便标签中有子标签,也会显示出来,而text()强调的是标签中的文本内容,不会显示子标签
- //7)查找表格中第二第三行的个数,即索引值是1和2,也就是比0大
- alert($("table tr:gt(0)").size()); //5
- //8)查找表格中第一第二行的个数,即索引值是0和1,也就是比2小
- alert($("table tr:lt(3)").size());
- //9)给页面内所有标题<h1><h2><h3>加上红色背景色
- alert($(":header").css("background-color","red").css("color","white"));
2.4 内容选择器
[javascript] view
plain copy
- //1)查找所有包含文本"John"的div元素的个数
- alert($("div:contains(‘John‘)").size()); //2
- //2)查找所有p元素为空的元素个数
- alert($("p:empty").size()); //2
- //3)给所有包含p元素的div元素添加一个myClass样式
- $("div:has(p)").addClass("myClass");
- //4)查找所有含有子元素或者文本的p元素个数,即p为父元素
- alert($("p:parent").size()); //2
2.5 可见性选择器
[javascript] view
plain copy
- //1)查找隐藏的tr元素的个数
- alert($("table tr:hidden").size()); //1
- //2)查找所有可见的tr元素的个数
- alert($("table tr:not(:hidden)").size());
- alert($("table tr:visible").size()); //2
2.6 属性选择器
[java] view
plain copy
- //1)查找所有含有id属性的div元素个数
- alert($("div[id]").size()); //1
- //2)查找所有name属性是newsletter的input元素,并将其选中
- $("input[name=‘newsletter‘]").attr("checked","checked");
- //3)查找所有name属性不是newsletter的input元素,并将其选中
- $("input[name!=‘newsletter‘]").attr("checked","true"); //1
- //4)查找所有name属性以‘news‘开始的input元素,并将其选中
- $("input[name^=‘news‘]").attr("checked","true"); //3
- //5)查找所有name属性以‘letter‘结尾的input元素,并将其选中
- $("input[name$=‘letter‘]").attr("checked","true"); //2
- //6)查找所有name属性包含‘news‘的input元素,并将其选中
- $("input[name*=‘news‘]").attr("checked","true"); //3
- //7)找到所有含有id属性,并且它的name属性是以"letter"结尾的input元素,并将其选中
- $("input[id][name$=‘letter‘]").attr("checked","true");
2.7 子元素选择器
[javascript] view
plain copy
- //1)迭代[each]每个ul中第1个li元素中的内容,索引从1开始
- $("ul li:first-child").each(function(){
- alert($(this).text());
- });
- //2)迭代每个ul中最后1个li元素中的内容,索引从1开始
- $("ul li:last-child").each(function(){
- alert($(this).text());
- });
- //3)在ul中查找是唯一子元素的li元素的内容
- $("ul li:only-child").each(function(){
- alert($(this).text());
- });
- //4)迭代每个ul中第2个li元素中的内容,索引从1开始
- $("ul li:nth-child(2)").each(function(){
- alert($(this).text());
- });
2.8 表单选择器
[javascript] view
plain copy
- //1)查找所有input元素的个数
- alert($("input").size()); //10
- alert($(":input").size()); //13
- //2)查找所有文本框的个数
- alert($(":text").size()); //1
- //3)查找所有密码框的个数
- alert($(":password").size()); //1
- //4)查找所有单选按钮的个数
- alert($(":radio").size());
- //5)查找所有复选框的个数
- alert($(":checkbox").size());
- //6)查找所有提交按钮的个数
- alert($(":submit").size());
- //7)匹配所有图像域的个数
- alert($(":images").size());
- //8)查找所有重置按钮的个数
- alert($(":reset").size());
- //9)查找所有普通按钮的个数
- alert($(":button").size());
- //10)查找所有文件域的个数
- alert($(":file").size()); //1
- //11)查找所有input元素为隐藏域的个数
- alert($(":input:hidden").size()); //1
2.9 表单对象属性选择器
[javascript] view
plain copy
- //1)查找所有可用的input元素的个数
- alert($("input:enabled").size());
- //2)查找所有不可用的input元素的个数
- alert($("input:disabled").size());
- //3)查找所有选中的复选框元素的个数
- alert($(":checkbox:checked").size());
- //4)查找所有未选中的复选框元素的个数
- alert($(":checkbox:not(:checked)").size());
- //5)查找所有选中的选项元素的个数
- alert($("select option:selected").size());
- alert($("#provinceID option:not(:selected)").size());
三、JQuery的方法API的使用
jquery的方法非常多,其实都挺简单的,使用jquery大大降低了开发难度。该部分内容在下载的文件中的\JQuery\WebRoot\method目录中。
each():是jQuery中专用于迭代数组的方法,参数为一个处理函数,this表示当前需要迭代的js对象
append():追加到父元素之后
prepend():追加到父元素之前
after():追加到兄弟元素之后
before():追加到兄弟元素之前
attr(name):获取属性值
attr(name,value):给符合条件的标签添加key-value属性对
$("<div id=‘xxID‘>HTML代码</div>"):创建元素,属性,文本
remove():删除自已及其后代节点
val():获取value属性的值
val(""):设置value属性值为""空串,相当于清空
text():获取HTML或XML标签之间的值
text(""):设置HTML或XML标签之间的值为""空串
clone():只复制样式,不复制行为
clone(true):既复制样式,又复制行为
replaceWith():替代原来的节点
removeAttr():删除已存在的属性
addClass():增加已存在的样式
removeClass():删除已存在的样式
hasClass():判断标签是否有指定的样式,true表示有样式,false表示无样式
toggleClass():如果标签有样式就删除,否则增加样式
offset():获取对象的left和top坐标
offset({top:100,left:200}):将对象直接定位到指定的left和top坐标
width():获取对象的宽
width(300):设置对象的宽
height():获取对象的高
height(500):设置对象的高
children():只查询子节点,不含后代节点
next():下一下兄弟节点
prev():上一下兄弟节点
siblings():上下兄弟节点
show():显示对象
hide():隐藏对象
fadeIn():淡入显示对象
fadeOut():淡出隐藏对象
slideUp():向上滑动
slideDown():向下滑动
slideToggle():上下切换滑动,速度快点
下面来看一些实例:
1、关于循环:
[javascript] view
plain copy
- //用JSON语法创建一个一维数组,存入object类型的编号和姓名,再迭代
- var nameArray=[
- {id:1,name:"张三 "},
- {id:2,name:"王明" },
- {id:3,name:"李水" }
- ];
- var _nameArray=$(nameArray);
- _nameArray.each(function(){
- //this代表object类型
- alert(this.id+":"+this.name);
- });
2、子元素插入到父元素内
[javascript] view
plain copy
- //DIV标签插入到UL标签之后(父子关系)
- $("ul").append($("div"));
- //DIV标签插入到UL标签之前(父子关系)
- $("ul").prepend($("div"));
3、子元素插入到父元素外
[javascript] view
plain copy
- //DIV标签插入到UL标签之后(兄弟关系)
- $("ul").after($("div"));
- //DIV标签插入到UL标签之前(兄弟关系)
- $("ul").before($("div"));
4、获取属性
[javascript] view
plain copy
- //取得form里第一个input元素的type属性
- alert($("form input:first").attr("type")); //text
- //设置form下最后一个input元素的为只读文本框
- $("form input:last").attr("readonly","readonly");
- $(":password").attr("readonly","readonly");
- //获取密码框的值
- alert($(":password").val());
5、创建元素
[javascript] view
plain copy
- //创建div元素,添加"哈哈"文本,ID属性,并添加到文档中
- //js方式
- var divElement=document.createElement("div");
- divElement.innerHTML="哈哈";
- divElement.setAttribute("id","2016");
- //document.getElementsByTagName("body")[0].appendChild(divElement);
- document.body.appendChile(divElement);
- //jquery方式
- var _div=$("<div id=‘2016‘>哈哈</div>");
- // $("body").append(_div);
- $(document.body).append(_div);
6、删除元素
[javascript] view
plain copy
- //删除ID为secondID的LI元素
- $("#secondID").remove();
- //删除所有LI元素
- $("ul li").remove();
- //删除UL元素
- $("ul").remove();
- //$(""#b").remove();
7、获取文本内容
[javascript] view
plain copy
- //取得<div>中的内容
- alert($("div").text());
- //取得<option>的值和描述
- var _option=$("#city option");
- var value=_option.val();
- var text=_option.text();
- alert(value+":"+text);
8、复制元素
[javascript] view
plain copy
- //复制原input元素,添加到原input元素后,与其同级
- var _old=$(":button");
- var _new=_old.clone(); //在内存中
- _new.val("新按钮"); //无参代表取值,有参代表赋值
- _old.after(_new);
- //为原input元素动态添加单击事件,且复制原input元素,
- var _old=$(":button");
- _old.click(function(){
- alert("动态事件");
- });
- //添加到原input元素后,与其同级,且和原按钮有一样的行为
- var _new=_old.clone();
- _new.val("新按钮");
- _old.after(_new);
9、替换元素
[javascript] view
plain copy
- //双击<div>中的文本,用文本框替换文本
- $("div").dblclick(function(){
- var _text=$("<input type=‘text‘ style=‘width:165px;height:23px‘ />");
- //文本框替代文本框标签
- $(this).replaceWith(_text);
- });
10、删除属性
[javascript] view
plain copy
- //为<table>元素添加属性border/align/width
- $("table").attr("border","2").attr("align","center").attr("width","40%");
- //将<table>元素的align属性删除
- $("table").removeAttr("align");
11、添加样式
[javascript] view
plain copy
- //为无样式的DIV添加样式
- $("div:first").addClass("myClass");
- //为有样式的DIV删除样式
- $("div:last").removeClass("myClass");
- //切换样式,即有样式的变成无样式,无样式的变成有样式
- $("div").toggleClass("myClass");
- //最后一个DIV是否有样式
- var flag=$("div:last").hasClass("myClass");
- alert(flag?"有":"无");
12、获取坐标,坐标设置
[java] view
plain copy
- //获取图片的坐标
- var offset=$("img").offset();
- var x=offset.top;
- var y=offset.left;
- alert(x+":"+y);
- //设置图片的坐标
- $("img").offset({
- top:200,
- left:200
- });
- //获取图片的宽高
- var w=$("img").width();
- var h=$("img").height();
- alert(w+":"+h);
- //设置图片的宽高
- var w=$("img").width(500);
- var h=$("img").height(500);
13、获取父元素的子元素
[javascript] view
plain copy
- //取得div元素的直接子元素内容,不含后代元素
- var _span=$("div").children();
- var content=_span.html();
- alert(content);
- //取得div元素的下一个同级的兄弟元素内容
- var _p=$("div").next();
- alert(_p.text());
- //取得div元素的上一个同级的兄弟元素内容
- var _p=$("div").prev();
- alert(_p.text());
- //依次取得div元素的上下一个同级的所有兄弟元素的内容
- var _all=$("div").siblings();
- _all.each(function(){
- alert($(this).text());
- });
- //只找p
- var _all=$("div").siblings("p");
- _all.each(function(){
- alert($(this).text());
- });
14、动画渐变(显示,隐藏)
[java] view
plain copy
- //图片隐蔽
- //$("img").hide(5000); //5秒之后隐藏
- //隐藏的动画结束后调用一个函数
- $("img").hide(5000,function(){
- alert("完成");
- });
- //暂停3秒后继续隐藏
- window.setTimeout(function(){
- $("img").show(5000);
- },3000);
- //图片显示
- $("img").show(5000);
15、图片的淡入淡出
[javascript] view
plain copy
- //淡入显示图片
- $("img").fadeIn(5000);
- //淡出隐蔽图片
- $("img").fadeOut(5000);
16、标签的滑动
[javascript] view
plain copy
- //向上下滑动
- $(":button").click(function(){
- //div标签上下移动
- $("div").slideToggle(1000);
- });
四、JQuery的事件API
1、页面加载
[javascript] view
plain copy
- //定义a()和b()二个方法
- function a(){
- alert("JS方式");
- }
- function b(){
- alert("JQUERY方式");
- }
- //使用JS方式加载a()和b()二个方法
- window.onload=function(){
- a();
- b();
- };
- //使用jQuery方式加载a()和b()二个方法
- $(document).ready(function(){
- a();
- b();
- });
- //使用jQuery最简方式加载a()和b()二个方法
- $(function(){
- a();
- b();
- });
- //js方式的onload与jquery方式的ready对比,ready更快。
2、触发改变事件
[javascript] view
plain copy
- //当<select>标签触发onchange事件,显示选中<option>的value和innerHTML属性的值
- $("#city").change(function(){
- var $option=$("#city option:selected");
- var value=$option.val();
- var text=$option.text();
- alert(value+":"+text);
- });
3、获得焦点
[javascript] view
plain copy
- //加载页面时获取光标并选中所有文字
- $(function(){
- //光标定位文本框
- $(":text").focus();
- //选中文本框所有文本
- $(":text").select();
- });
4、按键事件
[javascript] view
plain copy
- //当按键弹起时,显示所按键的code码
- $(function(){
- $(document).keyup(function(){
- //获取按键的unicode编码
- var code=event.keyCode;
- alert(code);
- });
- });
5、获得鼠标的移动事件
[javascript] view
plain copy
- //显示鼠标移动时的X和Y座标
- $(function(){
- $(document).mousemove(function(){
- var x=event.clientX;
- var y=event.clientY;
- $("#xID").val(x);
- $("#yID").val(y);
- });
- });
6、mouseover和mouseout事件
[javascript] view
plain copy
- //鼠标移到某行上,某行背景变色
- $("table tr").mouseover(function(){
- $(this).css("background-color","pink");
- });
- //鼠标移出某行,某行还原
- $("table tr").mouseout(function(){
- $(this).css("background-color","white");
- });
- //鼠标移到某图片上,为图片加边框
- $("img").mouseover(function(){
- $(this).css("border-color","red");
- });
- //鼠标移出图片,图片还原
- $("img").mouseout(function(){
- $(this).css("border-color","white");
- });
7、submit事件
[javascript] view
plain copy
- <form action="06_mouseover_mouseout.html" method="post">
- 用户名:<input type="text"/>
- <input type="submit" value="表单提交"/>
- </form>
- <script type="text/javascript">
- //当表单提交前检测
- $(function(){
- //将光标定位于文本框中
- $(":text").focus();
- });
- $("form").submit(function(){
- var flag=false;
- //获取文本框中的内容
- var name=$(":text").val();
- //去掉两边空格
- name=$.trim(name);
- if(name.length==0){
- alert("用户名不能为空");
- $(":text").focus();
- $(":text").val("");
- }else{
- flag=isChinese(name);
- //不是中文
- if(!flag){
- alert("用户名必须是中文");
- }else{
- }
- }
- return flag;
- });
- //检查是否为中文
- function isChinese(str){
- if(/^[\u4e00-\u9fa5]+$/.test(str)){
- return true;
- }else{
- return false;
- }
- }
- </script>