本系列文章在 https://github.com/freestylefly/javaStudy 持(huan)续(ying)更(jia)新(入)中,欢迎有兴趣的童鞋们关注。
一、jQuery概述
1、什么是jQuery?
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
2、jQuery的核心特性
jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等
3、JQuery的作用:
- 写更少的代码,做更多的事情: write Less ,Do more
- 将我们页面的JS代码和HTML页面代码进行分离
二、jQuery入门
1、JQ的语法结构
1、页面加载完成事件
$(document)..ready(function(){})
$(document).ready()与window.onload类似,但也有区别
window.onload | $(document).ready() | |
---|---|---|
执行时机 | 必须等待网页中所有的内容加载完毕后(包括图片、flash、视频等)才能执行 | 网页中所有DOM文档结构绘制完毕后即刻执行,可能与DOM元素关联的内容(图片、flash、视频等)并没有加载完 |
编写个数 | 同一页面不能同时编写多个 | 同一页面能同时编写多个 |
简化写法 | 无 | $(function(){ |
$(selector).action()
$()工厂函数,将dom对象转换为JQ对象
selector:选择器
action():方法,有事件处理方法
2、JQ的开发步骤:
1 | 1. 导入JQ相关的文件 |
3、JS和JQ文档流加载区别
1 | <script> |
js会覆盖,而JQ不会覆盖
- 脚本从上到下执行
- onload事件是在页面先加载完再执行,
- JQ中的页面加载完成事件在页面加载完成后执行但是速度比onload要快,所以脚本文件一般写在页面最底部
3、JQ和JS之间的转换
- JQ对象,只能调用JQ的属性和方法
- JS对象 只能调用JS的属性和方法
1 | function changeJS(){ |
4、JQ操作样式
1、css()方法
单个样式:css(“属性”,”属性值”)
多个样式:css(“属性”:”属性值”,”属性”:”属性值”);
2、addClass()方法:在括号内直接写类名即可,不用加点
样式多的时候使用
链式操作(选择器选择了一个元素.next()代表下一个元素,children(”a”)代表下一个名字是a的子元素)和隐式迭代
5、JQ常用方法
mouseover():鼠标悬浮
mouseout():鼠标移出
show():显示
hide():隐藏
index()方法,用于获取对应元素在父级中的下标
1 | $(".nav ul li").click(function(){ |
三、JQuery中的选择器
1、基本选择器
- ID选择器 : #ID的名称
- 类选择器: 以 . 开头 .类名
- 元素(标签)选择器: 标签的名称
- 通配符(全局)选择器: *
- 并集选择器: 选择器1,选择器2
案例:
1 | <!-- |
2、层级选择器
- 子元素选择器: 选择器1 > 选择器2(只能是儿子)
- 后代选择器: 选择器1 儿孙
- 相邻兄弟选择器 : 选择器1 + 选择器2 : 找出紧挨着的同辈元素(第一个弟弟)
- 通用兄弟选择器: 选择器1~ 选择器2 : 找出所有选择器1之后的同辈元素
1 | <script> |
3、属性选择器
- a[name]含有属性名为name的元素
- a[name=”value”]有属性名为name的属性值为value元素
- a[name^=”value”]含有属性名为name的属性值以value开头元素
- a[name$=”value”]含有属性名为name的属性值以value结尾元素
- a[name*=”value”]含有属性名为name的属性值包含value的元素
4、JQ中的基本过滤器
通过特定的过滤规则来筛选出所需的元素
基本过滤选择器(索引一律从0开始)
::even:选取索引为偶数的元素
::odd:选取索引为奇数的元素
eq(index):选取索引为index的元素
:gt(index):选取索引大于index的元素
:lt(index):选取索引小于index的元素
:header:选取所有标题元素(h1-h6)
:focus:选取当前获取焦点的元素
:animated:选取所有动画
可见性过滤选择器s
hidden:选择所有隐藏的元素(能选到display-none、hide()、type=“hidden”
visible:选择所有可见的元素
表单对象
内容/子元素过滤选择器
特殊符号的转义:\
选择器的书写规范很严格,多一个空格或少一个空格,都会影响选择器的效果
1 | <script> |
5、JQ中的属性选择器
1 | $(function(){ |
5、JQ中的表单过滤器
:selected
:checked
JQ中用的是submit()方法提交表单
JS用的是onsubmit=“return login
1 | <script> |
四、JQ中常用函数及遍历数组
1 | $(function) : 文档加载完成的事件 |
五、JQ中的事件和动画效果
1、事件
1、基础事件
鼠标事件
click():鼠标点击
mouseover/mouseout:鼠标悬浮/离开(被选元素+子元素)
mouseenter/mouseleave:鼠标悬浮/离开(被选元素)
键盘事件
keydown /keyup:键盘按下和松开
keypress:键盘按下产生可打印的字符时
按下回车键触发的特效
1
2
3
4
5$(document).keydown(function(even){
if(even.keyCode==13){
alert("确认要提交吗?)
}
})window事件
resize():浏览器事件,调整窗口大小时,完成页面特效
表单事件
常用于搜索框,未点击搜索框时,有提示信息,点击搜索框时候提示信息就消失了
鼠标聚焦:focus
失去焦点:blur
2、复合事件
鼠标光标悬停
hover()方法相当于mouseover与mouseout事件的组合
hover(fn1,fn2)
鼠标连续点击
toggle()方法用于模拟鼠标连续click事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
191、toggle():
与show( )和hide( )方法作用一样,点击显示,再点击隐藏
2、toggle(fn1,fn2,...),仅支持1.8.0以上版本
点击几次就有几个function
$("input:first").toggle(
function(){
$("div").css("background","red");
},
function(){
$("div").css("background","blue");
},
function(){
$("div").css("background","green");
}
);
3、toggleClass()可以对样式进行切换,前提是先要在css样式中写上相应的类样式,如:.red
$("input:last").click(function(){
$("p").toggleClass("red");
});
3、绑定和移出事件
- 绑定:on/bind
(on和bind都可以用作事件绑定,但是on绑定事件对于新增元素也有效)
1 | 1、绑定单个事件: |
- 移出绑定off/unbind
1 | 移出绑定前需要对绑定的事件命名 |
2、动画效果
show()显示
hide()隐藏
slideUp使元素逐步缩短直至隐藏
slideDown可以使元素逐步延伸显示
fadeIn
fadeOut
animate : 自定义动画:
$(selector).
animate({params},speed,callback)params:必须,定义形成动画的CSS属性
stop:
无参:停止当前
一个参数:停止所有
两个参数:停止所有,并回到动画最终的位置
六、jQuery中的DOM操作
1、css操作
添加样式
css(),单个样式css(“name”,”value”),多个样式:css(“{name1”:”value1”,”name2”,”value2”})
addClass:添加类样式,多个用空格隔开
height:设置或返回匹配元素的高度
width:设置或返回匹配元素的宽度
offset:返回以像素为单位的top和left坐标。仅对可见元素有效
offsetParent:返回最近的已定位祖先元素。定位元素指的是元素的CSS
position值被设置为relative、absolute或fixed的元素position:返回第一个匹配元素相对于父元素的位置
scrollLeft:参数可选。设置或返回匹配元素相对滚动条左侧的偏移
scrollTop:参数可选。设置或返回匹配元素相对滚动条顶
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19制作页面小广告随滚动条滚动
$(document).ready(function(){
//获取初识位置
var topEle=parseInt($("#adver").css("top"));
var leftEle=parseInt($("#adver").css("left"));
//滚轮滚动事件
$(window).scroll(function () {
//获取该变量
var changeTop=$(this).scrollTop();
var changeLeft=$(this).scrollLeft();
//得到改变后的位置
var endTop=changeTop+topEle+"px";
var endLeft=changeLeft+leftEle+"px";
$("#adver").css({"top":endTop,"left":endLeft});
})
})
移除样式
removeClass
切换样式
toggleClass(需要和hover一起使用)
判断是否包含某样式
haseClass
2、HTML代码操作
1 | html():获取元素的html代码 |
3、标签内容操作
1 | text();:获取元素中的文本内容 |
4、属性和属性值操作
1 | val()无参代表获取value值,有值即表示设置value的值 |
5、节点操作
创建节点
1
$()工厂函数可直接创建节点
插入节点
1
2
3
4
5
6
7
8
9
101、有父子元素的插入
将儿子F加到父亲E的最后(父E,子F)
E.append(F):
F.append(E):
将儿子F加到父亲E的最前面(父E,子F)
E.prepend(F):
F.prependTo(E)
2、插入同辈节点
A.after(B):将B插到A的后面(beforeD代表前)
A.insertAfter(B):将A插到B的后面(insertbeforeD代表前)删除节点
remove:删除整个节点,包括结构
empty:清空节点里面的内容,但结构保留
detach:删除整个节点,但是保留事件
替换节点
replaceWith(同append)
replaceAll(同appendTo)
复制节点
clone():纯粹复制节点
clone(true):节点里面绑定的事件也会被复制
六、使用JQuery完成页面定时弹出广告
1、 需求分析
当用户打开界面,3秒钟之后弹出广告,这个广告显示5秒钟,隐藏广告
2、 技术分析
定时器: setTimeout
显示和隐藏: style.display = “block/none”
3、步骤分析
- 导入JQ的文件
- 编写JQ的文档加载事件
- 启动定时器 setTimeout(“”,3000);
- 编写显示广告的函数
- 在显示广告里面再启动一个定时器
- 编写隐藏广告的函数
4、代码实现
1 | <script> |
七、使用JQ完成表格的隔行换色
1、需求分析
在我们的实际开发过程中,我们的表格如果所有的行都是一样的话,很容易看花眼,所以我们需要让我们的表格隔行换色
2、技术分析
获取所有行 table.rows
遍历所有行
根据行号去修改每一行的背景颜色: bgColor
style.backgroundColor = “red”
3、步骤分析
- 导入JQ的包
- 文档加载完成函数: 页面初始化
- 获得所有的行 : 元素选择器
- 根据行号去修改颜色
5、代码实现
1 | $(function(){ |
八、使用JQuery完成表单的全选全不选功能以及隔行换色
1、需求分析
在我们对表格处理的时,有些情况下,我们需要对表格进行批量处理,,隔行换色
2、代码实现:
1 |
|
九、使用JQ完成省市联动效果
1、需求分析
在我们的注册表单中,通常我们需要知道用户的籍贯,需要一个给用选择的项,当用户选中了省份之后,列出省下面所有的城市
2、技术分析
- 准备工作 : 城市信息的数据
- 添加节点 : appendChild (JS)
- append : 添加子元素到末尾
- appendTo : 给自己找一个爹,将自己添加到别人家里
- prepend : 在子元素前面添加
- after : 在自己的后面添加一个兄弟
- 遍历的操作:
3、步骤分析
- 导入JQ的文件
- 文档加载事件:页面初始化
- 进一步确定事件: change事件
- 函数: 得到当前选中省份
- 得到城市, 遍历城市数据
- 将遍历出来的城市添加到城市的select中
4、代码实现
1 |
|
十、使用JQ完成下拉列表左右选择
1、代码实现
1 |
|
十一、JQ完成表单表单验证
1 | $(document).ready(function () { |
补充:使用HTML5进行表单验证
1 | /** |
html代码片段
1 |
|
十二、正则表达式
1、声明
1 | var reg=/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/; |
2、test方法
1 | if(reg.test(email)==false){ |
3、手册及常用正则表达式
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
4、String对象与正则表达式
方法 | 描述 |
---|---|
match() | 找到一个或多个正则表达式的匹配 |
search() | 检索与正则表达式相匹配的值 |
replace() | 替换与正则表达式相匹配的字符串 |
split() | 把字符串分割成字符串数组 |
g代表全局匹配,i代表忽略大小写