1小时学会JQuery
---------------------------------------------------------------------------------------------------------------
[版权申明:本文系作者原创,转载请注明出处]
文章出处:http://blog.csdn.net/sdksdk0/article/details/51756085
作者:朱培 ID:sdksdk0
---------------------------------------------------------------------------------------------------------------
一、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的九类选择器
2.1 基本选择器
- //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 层次选择器
- //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 增强基本选择器
- //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 内容选择器
- //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 可见性选择器
- //1)查找隐藏的tr元素的个数
- alert($("table tr:hidden").size()); //1
- //2)查找所有可见的tr元素的个数
- alert($("table tr:not(:hidden)").size());
- alert($("table tr:visible").size()); //2
2.6 属性选择器
- //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 子元素选择器
- //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 表单选择器
- //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 表单对象属性选择器
- //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的使用
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、关于循环:
- //用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、子元素插入到父元素内
- //DIV标签插入到UL标签之后(父子关系)
- $("ul").append($("div"));
- //DIV标签插入到UL标签之前(父子关系)
- $("ul").prepend($("div"));
3、子元素插入到父元素外
- //DIV标签插入到UL标签之后(兄弟关系)
- $("ul").after($("div"));
- //DIV标签插入到UL标签之前(兄弟关系)
- $("ul").before($("div"));
4、获取属性
- //取得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、创建元素
- //创建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、删除元素
- //删除ID为secondID的LI元素
- $("#secondID").remove();
- //删除所有LI元素
- $("ul li").remove();
- //删除UL元素
- $("ul").remove();
- //$(""#b").remove();
7、获取文本内容
- //取得<div>中的内容
- alert($("div").text());
- //取得<option>的值和描述
- var _option=$("#city option");
- var value=_option.val();
- var text=_option.text();
- alert(value+":"+text);
8、复制元素
- //复制原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、替换元素
- //双击<div>中的文本,用文本框替换文本
- $("div").dblclick(function(){
- var _text=$("<input type='text' style='width:165px;height:23px' />");
- //文本框替代文本框标签
- $(this).replaceWith(_text);
- });
10、删除属性
- //为<table>元素添加属性border/align/width
- $("table").attr("border","2").attr("align","center").attr("width","40%");
- //将<table>元素的align属性删除
- $("table").removeAttr("align");
11、添加样式
- //为无样式的DIV添加样式
- $("div:first").addClass("myClass");
- //为有样式的DIV删除样式
- $("div:last").removeClass("myClass");
- //切换样式,即有样式的变成无样式,无样式的变成有样式
- $("div").toggleClass("myClass");
- //最后一个DIV是否有样式
- var flag=$("div:last").hasClass("myClass");
- alert(flag?"有":"无");
12、获取坐标,坐标设置
- //获取图片的坐标
- 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、获取父元素的子元素
- //取得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、动画渐变(显示,隐藏)
- //图片隐蔽
- //$("img").hide(5000); //5秒之后隐藏
- //隐藏的动画结束后调用一个函数
- $("img").hide(5000,function(){
- alert("完成");
- });
- //暂停3秒后继续隐藏
- window.setTimeout(function(){
- $("img").show(5000);
- },3000);
- //图片显示
- $("img").show(5000);
15、图片的淡入淡出
- //淡入显示图片
- $("img").fadeIn(5000);
- //淡出隐蔽图片
- $("img").fadeOut(5000);
16、标签的滑动
- //向上下滑动
- $(":button").click(function(){
- //div标签上下移动
- $("div").slideToggle(1000);
- });
四、JQuery的事件API
1、页面加载
//定义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、触发改变事件
//当<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、获得焦点
//加载页面时获取光标并选中所有文字
$(function(){
//光标定位文本框
$(":text").focus();
//选中文本框所有文本
$(":text").select(); });
4、按键事件
//当按键弹起时,显示所按键的code码
$(function(){
$(document).keyup(function(){
//获取按键的unicode编码
var code=event.keyCode;
alert(code);
});
});
5、获得鼠标的移动事件
//显示鼠标移动时的X和Y座标 $(function(){
$(document).mousemove(function(){
var x=event.clientX;
var y=event.clientY;
$("#xID").val(x);
$("#yID").val(y); });
});
6、mouseover和mouseout事件
//鼠标移到某行上,某行背景变色
$("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事件
<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>
源码下载地址:https://github.com/sdksdk0/JQuery-Demo
1小时学会JQuery的更多相关文章
- 一个小时学会jQuery
前一段时间录了一套关于jQuery的视频分享给大家,可以在下载区下载到,本来想配合文字一起的,后面发现视频+帮助文档也是非常好的学习方法. 一.jQuery简介与第一个jQuery程序 1.1.jQu ...
- 一个小时学会jQuery(转载)
目录 一.jQuery简介与第一个jQuery程序 1.1.jQuery简介 1.2.jQuery特点 1.3.jQuery版本 1.4.获得jQuery库 1.5.第一个jQuery程序 二.jQu ...
- web前端入门:一小时学会写页面
一小时学会写页面 作为一个懒癌晚期患者,总是习惯找各种简单的解决问题的方法,也习惯性把问题简单化,所以今天想分享给大家简单的web前端入门方法.既然题目已经定了一个小时那么废话就不多说了,计时开始 1 ...
- 半小时学会上传本地项目到github
半小时学会上传本地项目到github 闲着无聊写给那些正在学习怎么上传本地项目到github的同学. 开始学习 一.创建github账号 好吧,这步多余了. 二.创建个人仓库 三.配置SSH keys ...
- Python入门教程 超详细1小时学会Python(转)
假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows ...
- 三小时学会Kubernetes:容器编排详细指南
三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后 ...
- [转] 一个小时学会Git
一个小时学会Git http://www.cnblogs.com/best/p/7474442.html
- 【转载】一个小时学会MySQL数据库
一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数 ...
- Android开发工程师文集-1 小时学会Widget小组件开发
前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相 ...
随机推荐
- Windows安装SVN服务器和客户端
我的操作系统版本是windows10 64位.接下来我会先介绍SVN服务器的安装,然后再介绍安装SVN客户端,并进行测试. 下载 首先我们需要到官网上去下载svn服务器程序. [svn官网地址] (h ...
- wifi 破解笔记
最近小夜刚刚学习了无线WiFi的密码破解,感觉很神奇,不过以下操作都是作为学习测试的内容进行的,希望志同道合的小伙伴切不要触碰法律的红线哦! 话不多说,直接上硬菜. 实验环 ...
- servlet与ajax数据交换(json格式)
JSON数据格式: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于的一个子集. JSON采用完全独 ...
- Mysql之库表操作(胖胖老师)
SQL概念:结构化查询语言(SQL = Structured Query Language),也是一种编程语言(数据库查询和程序设计语言),可以用于数据的存取及查询,更新,管理关系型数据库系统ps: ...
- PHPCMS v9.6.0 任意用户密码重置
参考来源:http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0173130.html 他分析的好像不对.我用我的在分析一次. 先来看poc: /inde ...
- [SCOI2005]最大子矩阵
题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
- hdu 5428
题意:一个数是这n个数的乘,找出它一个不是素数的最小因子 求出所有数的所有质因子中最小的两个,相乘就是答案.如果所有数字的质因子个数不到两个,那么就是无解. #include<iostream& ...
- [HNOI2009]最小圈
题目描述 对于一张有向图,要你求图中最小圈的平均值最小是多少,即若一个圈经过k个节点,那么一个圈的平均值为圈上k条边权的和除以k,现要求其中的最小值 输入输出格式 输入格式: 第一行2个正整数,分别为 ...
- c++中双冒号的作用
双冒号(::)用法 参考链接:https://segmentfault.com/a/1190000000345680 1.表示“域操作符”例:声明了一个类A,类A里声明了一个成员函数void f(), ...
- Linux学习之CentOS(六)---mount挂载设备(u盘,光盘,iso等 )
对于新手学习,mount 命令,一定会有很多疑问.其实我想疑问来源更多的是对linux系统本身特殊性了解问题. linux是基于文件系统,所有的设备都会对应于:/dev/下面的设备.如: [cheng ...