学习了jQuery的基本语法,发现jQuery的选择器非常强大,还解决了浏览器的兼容问题,迫不及待想要尝试一下,于是对着书本的案例实现了一些小案例,虽然是小案例,但是对我来说也不容易,花了好多时间才调试通过。意识到知识不去整理,很快就忘记,加上本次学习的都是一些比较常用的案例,于是想记录下来,方便以后直接拷贝~~
1、单行文本框添加获取、失去焦点样式事件
对文本框的操作,包括获取焦点时候输入框变色、失去焦点时恢复原来的颜色。需要注意的是:input的边框必须设置为2px,textarea的边框必须设置为1px,这样才能防止它们获取和失去焦点时,产生“抖动”现象。具体请看下面代码,大家可以新建一个html文件,随意改动一下input和textarea的边框看看效果。
|
|
运行效果如下:
2、多行文本框高度和滚动条的操作
对多行文本框添加事件,包括调整文本框的高度、操作滚动条,加上过度动画等。具体请看代码:
|
|
运行效果如下:
3、复选框的基本操作(全选/全不选、反选、联动)
对复选框的操作,包括:全选/全不选、反选、联动(全选按钮的状态会跟随选项组的变化而变化,选项组中有一个没有选中,全选按钮都不会选中。反过来也一样,选项组全部选中时,全选按钮会自动变为选中状态)。代码如下:
|
|
运行效果:
4、移动下拉框内容(单击移动、全部移动、双击移动)
对下拉框的操作,包括:将选中的内容移动到另一个选项组中、双击某个选项移动到另一个选项组中、全部选项移动到另一个选项组中。代码如下:
|
|
运行效果:
5、表单验证
表单验证包括:对输入内容进行实时检测并给出相应提示、内容不符合要求时阻止表单提交。代码如下:
|
|
运行效果:
6、表格应用
6.1 普通的隔行变色
普通的隔行变色可以,新建两个不同的样式,例如新建两个样式:.even{background:orange;} 和 .odd{background:skyblue;}
。然后通过jQuery给表格的奇数行添加一个名为odd的类,给偶数行添加一个名为even的类。这样就可以实现隔行变色效果了。代码如下:
|
|
运行效果:
6.2 单选框控制表格行高亮(单行高亮)
单选框控制表格行高亮,主要思路是:
- 在每个行第一个td前增加一个单选框;
- 新建一个行的样式(例如:selected{…}),用于区分选中和未选中状态;
- 给表格每行增加单击事件,单击时给对应行增加样式
addClass("selected")
,并移除其他行的样式removeClass("selected")
; - 找到当前行的单选按钮,设置按钮为选中状态
prop('checked',true)
。
具体请看下方代码(注意:请将radio的name设置为一致的,否则无法实现单选功能):
|
|
运行效果:
6.3 复选框控制表格行高亮(多行高亮)
复选框可以让选中的表格行高亮,支持多选。思路和单行选择差不多,这里不做过多赘述,代码如下:
|
|
6.4 表格展开关闭
表格的展开和关闭,主要是对行进行编组,单击组名对应的行,可以展开/折叠对应的子行。主要思路是:
- 新建对应组,组名对应的行,id设置为
row_x,x代表第x组
; - 子行的类名可以设置为
child_row_x
这样方便jQuery代码的编写; - 通过jQuery给每行添加单击事件,使用
toggleClass()
函数删除/添加高亮;该函数可以增加或删除控制高亮的类,存在就删除,不存在就添加; - 通过
siblings()
和toggle()
隐藏/显示行。siblings()
用于选择同组内的子行,然后通过toggle()
控制显示和隐藏(隐藏的就设置为显示,显示的就设置为隐藏)。
|
|
运行效果:
6.5 表格内容筛选
表格内容的筛选,主要通过contains()
和filter()
来实现。主要步骤如下:
- 首先给输入框绑定keyup事件,隐藏表格的所有“行(tr)”;
- 通过
contains()
筛选出用户输入的内容,然后通过filter()
筛选出包含对应字符的“行(tr)”; - 将第2步筛选出的“行(tr)”显示出来。
代码如下:
|
|
运行效果:
7、其他应用
7.1 网页字体大小
控制网页的字体,思路已经体现在代码的注释中,值得注意的是单位的获取以及数值的转换。
代码如下:
|
|
运行效果:
7.2 网页选项卡
网页选项卡的实现思路:
- 使用li创建选项,并为每个选择创建单独的内容div,除了第一个div外都设置为隐藏(display:none;);
- 为每个选项li绑定单击事件,单击时给对应元素
$(this)
添加选中的样式; - 获取当前li的索引值(index),并设置与当前li索引值一致的内容div为显示(display:block;);
- 使用
siblings()
选择其他的内容div,设置为隐藏(display:none;)。
代码如下:
|
|
运行效果: