自学JavaWeb第五天jQuery进阶

第五讲jQuery进阶

一、jQuery特效

(一)知识点介绍

jQuery特效,是指jQuery封装了 JS 的一些用于处理元素的显示与隐藏的比较好看的效果,我们可以通过调用函数直接使用。常用的 jQuery 特效有以下几种:

基本效果:

方法名

描述

show(speed,fn);

显示元素

hide(speed,fn);

隐藏元素

toggle(speed,fn);

1、使得显示元素隐藏

2、使得隐藏元素显示

滑动效果:

方法名

描述

slideDown(speed,fn);

显示元素

slideUp(speed,fn);

隐藏元素

slideToggle(speed,fn);

1、使得显示元素隐藏

2、使得隐藏元素显示

淡入淡出效果:

方法名

描述

fadeIn(speed,fn);

显示元素

fadeOut(speed,fn);

隐藏元素

fadeToggle(speed,fn);

1、使得显示元素隐藏

2、使得隐藏元素显示

注意:

以上所有动画效果方法中都有两个参数:

speed 动画效果的持续时间,单位:毫秒

fn 动画效果成功展示完成后,回来调用的函数。

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>显示与隐藏</title>

<script type="text/javascript" src="js/jquery-3.4.1.js"></script>

</head>

<body>

<p>

<input type="button"  id="show" value="显示" />  

<input type="button"  id="hide" value="隐藏" />  

<input type="button"  id="toggle" value="显示隐藏" />

</p>

<img id="adv" src="img/liuyan.jpg" width="500px" height="300px"/>

</body>

</html>

 自学JavaWeb第五天jQuery进阶

 

 

 自学JavaWeb第五天jQuery进阶

 

 

(二)案例-广告特效

需求说明:

页面加载后延迟 2 秒钟,在网页上方以滑动的方式显示广告图片,鼠标双击图片或者 2 秒后,同样以滑动的方式隐藏广告图片。

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>广告特效</title>

<script type="text/javascript" src="js/jquery-3.4.1.js"></script>

</head>

<body>

<table width="100%">

<!-- 网站顶部广告 -->

<tr>

<td>

<img id="ad" src="img/f001.jpg" width="100%" style="display:none;">

</td>

</tr>

<!-- 网站头部 图片 -->

<tr>

<td>

<table width="100%">

<tr>

<td>

<img src="img/logo.jpg" />

</td>

<td>

<img src="img/header.jpg" />

</td>

<td>

<a href="">登录</a>

<a href="">注册</a>

<a href="">购物车</a>

</td>

</tr>

</table>

</td>

</tr>

<!-- 网站黑色导航 -->

<tr>

<td>

<table width="100%" bgcolor="black">

<tr>

<td>

<a href="">

<font color="white" size="5">首页</font>

</a>

<a href="">

<font color="white" size="5">手机数码</font>

</a>

<a href="">

<font color="white" size="5">电脑办公</font>

</a>

<a href="">

<font color="white" size="5">家具家居</font>

</a>

</td>

</tr>

</table>

</td>

</tr>

<!-- 网站大轮播图 -->

<tr>

<td>

<img src="img/1.jpg" width="100%" />

</td>

</tr>

</table>

</body>

</html>

 自学JavaWeb第五天jQuery进阶

 

 

二、jQuery操作CSS

(一)知识点介绍

jQuery 可以通过以下方法动态的对元素的 CSS 样式进行操作。

属性解析:

方法名

说明

addClass(类样式名称)

给指定标签的 class 属性追加样式

removeClass()

将标签中指定的类样式移除

css(”样式属性”,”值”)    

css({”样式属性”:”值”, ”样式属性”:”值”})

设置css样式

toggleClass()

在addClass(类样式名称)和removeClass()方法之间进行切换,有样式就移除, 没有就执行添加操作

 

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style>

.blueDiv{

 

width:200px;

height:200px;

}

.redDiv{

 

width:200px;

height:200px;

}

</style>

<script type="text/javascript" src="js/jquery-3.4.1.js" ></script>

<script type="text/javascript">

$(function(){

//给第一个div添加样式

 

//移除第二个div样式

 

//在添加和移除之间进行切换

 

})

</script>

</head>

<body>

<div id="d1">11111</div>

<div id="d2" class="redDiv">22222</div>

<input type="button" value="点击切换" id="btn" />

</body>

</html>

 自学JavaWeb第五天jQuery进阶

 

 

(二)案例-表格隔行变色

1、案例描述

页面加载后表格奇偶行呈现不同的背景颜色,当鼠标悬浮到某一行时,当前行高亮显示。

如下图所示:

 自学JavaWeb第五天jQuery进阶

 

 

2、代码准备

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>表格隔行变色</title>

<script type="text/javascript" src="js/jquery-3.4.1.js"></script>

<style type="text/css">

tr{

text-align: center;

}

.gray{

/*淡灰色*/

}

.bling{

/*浅蓝色*/

}

</style>

</head>

<body>

<table align="center" border="1" cellpadding="0"

cellspacing="0" width="80%">

<tr>

<th>

<input type="checkbox"  id="chkall" value="全选" />全选

</th>

<th>序号</th>

<th>商品名称</th>

<th>商品描述</th>

<th>操作</th>

</tr>

<tr>

<td>

<input type="checkbox" name="chk"/>

</td>

<td>1</td>

<td>手机数码</td>

<td>手机数码商品信息</td>

<td>

<a href="#">修改</a>

<a href="#">删除</a>

</td>

</tr>

<tr>

<td>

<input type="checkbox" name="chk"/>

</td>

<td>2</td>

<td>电脑办公</td>

<td>电脑办公商品信息</td>

<td>

<a href="#">修改</a>

<a href="#">删除</a>

</td>

</tr>

<tr>

<td>

<input type="checkbox" name="chk"/>

</td>

<td>3</td>

<td>鞋靴箱包</td>

<td>鞋靴箱包商品信息</td>

<td>

<a href="#">修改</a>

<a href="#">删除</a>

</td>

</tr>

<tr>

<td>

<input type="checkbox" name="chk"/>

</td>

<td>4</td>

<td>家居饰品</td>

<td>家居饰品商品信息</td>

<td>

<a href="#">修改</a>

<a href="#">删除</a>

</td>

</tr>

</table>

</body>

</html>

3、代码实现

 自学JavaWeb第五天jQuery进阶

 

 

三、jQuery操作属性

(一)知识点介绍

在日常开发过程中,有时会对元素的属性进行获取或修改操作。jQuery提供了两种操作元素属性的方法。

属性解析:

方法

描述

prop("属性名");

获取属性的值       等价于  attr(“属性名”)

prop("属性名",属性值);

设置属性的值       等价于  attr(“属性名”,”属性值”)

removeProp("属性名");

移除属性名的值     等价于  removeattr(“属性名”)

jQuery的3.X版本之后把removeProp干掉了;

注意:

jQuery1.5版本之后, attr方法不再维护, 推荐使用prop;

 自学JavaWeb第五天jQuery进阶

 

 

Prop与attr方法有区别:

对于html元素本身自带有一些属性(固有属性)的标签, 例如: input(value , type), 此时用的是prop方法

而对于html元素本身没有固有属性的, 是我们自定义的一些属性; 例如: p标签(value), 这时使用attr方法;

 自学JavaWeb第五天jQuery进阶

 

 

(二)案例-全选/全不选

1、案例描述

点击全选按钮, 所有的复选框被选中, 再次点击全选按钮, 将被选中的复选框取消.

 自学JavaWeb第五天jQuery进阶

 

 

2、代码实现

 自学JavaWeb第五天jQuery进阶

 

 

四、jQuery操作DOM

(一)知识点介绍

1、元素 value 属性操作

属性解析:

方法名

描述

jQuery对象.val();

获取 value 属性的值

jQuery对象.val(值);

设置 value 属性的值

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>元素value属性操作</title>

<script type="text/javascript" src="js/jquery-3.4.1.js" ></script>

<script type="text/javascript">

//点击获取输入框的值

 

//点击设置输入框的值

 

</script>

</head>

<body>

<input type="text" id="uname" value="柳岩" /><br />

<input type="button" value="点击获取输入框的value值" onclick="run1()" />

<input type="button" value="点击设置输入框的value值" onclick="run2()" />

</body>

</html>

 自学JavaWeb第五天jQuery进阶

 

 

2、获取/设置元素体内容

1、获取/设置元素内容体 HTML 代码

属性解析:

方法名

描述

jQuery对象.html()

获得内容体 html 代码,如果有标签代码,一并获得。

等价于  js==> innerHtml

jQuery对象.html("HTML代码")

设置 html 代码,如果有标签,将进行解析。 

等价于  js==> innerHtml=”值”

2、获取/设置元素内容体纯文本

方法名

描述

JQ 对象.text()

获得文本,如果有标签,忽略。

等价于  js==> innerText

JQ 对象.text("纯文本")

设置文本,如果含有 HTML 标签,不进行解析。原样输出。

等价于  js==> innerText=”值”

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>设置元素内容体</title>

<script type="text/javascript" src="js/jquery-3.4.1.js" ></script>

</head>

<body>

<div id="d1">

<font color="red">宝强</font>

</div>

<hr />

<input type="button" value="点我获取内容体代码" onclick="run1()"/>

<input type="button" value="点我设置内容体代码为绿色字体"

onclick="run2()"/>

<hr />

<input type="button" value="点我获取内容体纯文本" onclick="run3()"/>

<input type="button" value="点我设置内容体纯文本" onclick="run4()"/>

</body>

</html>

 自学JavaWeb第五天jQuery进阶

 

 

3、添加/删除元素内容

通过 jQuery 可以很容易的动态添加和删除页面元素及内容。

添加方法:

以下两句效果相同,写法不同(父子关系)

  1. append(B), 向 A 的末尾追加 B
  2. appendTo(A),   将 B 追加到 A 的末尾

 自学JavaWeb第五天jQuery进阶

 

 

--------------------------------------------------------------------------------

以下两句效果相同,写法不同(父子关系)

  1. prepend(B), 向 A 的头部追加 B
  2. prependTo(A),  将 B 追加到 A 的头部

 自学JavaWeb第五天jQuery进阶

 

 

--------------------------------------------------------------------------------

after() - 在被选元素之后插入内容(兄弟关系)

before() - 在被选元素之前插入内容(兄弟关系)

删除方法:

remove() - 删除被选元素及其子元素

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>追加内容体</title>

<script type="text/javascript" src="js/jquery-3.4.1.js"></script>

</head>

<body>

<ul id="rank">

<li>Php</li>

<li>Android</li>

<li>Ios</li>

</ul>

<hr />

<input type="button" value="列表尾部追加Java" onclick="run1()" />

<input type="button" value="列表头部追加Java" onclick="run2()" />

<input type="button" value="在ul标签后添加P标签" onclick="run3()" />

<input type="button" value="在ul标签前添加P标签" onclick="run4()" />

<input type="button" value="移除所有P标签" onclick="run5()" />

</body>

</html>

 自学JavaWeb第五天jQuery进阶

 

 

 自学JavaWeb第五天jQuery进阶

 

 

4、知识点补充-jQuery数组遍历

回顾:

Js的数组遍历: 普通for循环或增强for循环;

jQuery 循环遍历元素 each():

方法名

描述

jQuery数组.each(fn);

遍历JQ数组

$.each(jQuery数组,fn);

遍历JQ数组

Fn: 代表是回调函数;

This: 代表当前遍历出来的每一个元素(element)

Index: 代表是索引

 自学JavaWeb第五天jQuery进阶

 

 

(二)案例-省市联动

1、案例描述

需求说明:

页面加载时将省份信息循环添加到省下拉列表框中,当选择一个省时,后面的市级信息会随之改变.

 自学JavaWeb第五天jQuery进阶

 

 

2、代码准备

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>省市联动</title>

<script type="text/javascript" src="js/jquery-3.4.1.js" ></script>

<script type="text/javascript">

// 定义二维数组,存储城市信息

var cities = new Array();

cities[0] = new Array("海淀区","房山区","朝阳区");

cities[1] = new Array("长春市","吉林市","*市","延边市");

cities[2] = new Array("济南市","青岛市","烟台市","潍坊市","淄博市");

cities[3] = new Array("石家庄市","唐山市","邯郸市","廊坊市");

cities[4] = new Array("南京市","苏州市","扬州市","宿迁市");

</script>

</head>

<body>

<select id="province" style="width:150px">

<option value="">----请-选-择-省----</option>

<option value="0">北京</option>

<option value="1">吉林省</option>

<option value="2">山东省</option>

<option value="3">河北省</option>

<option value="4">江苏省</option>

</select>

<select id="city" style="width:150px">

<option value="">----请-选-择-市----</option>

</select>

</body>

</html>

3、代码实现

 自学JavaWeb第五天jQuery进阶

 

 

五、表单校验

(一)知识点介绍

在学习javascript时候,我们手动的完成过表单数据的校验,这项功能在实际开发中也是常见的,属于通用功能,但是单纯的通过javascript进行校验,如果选项过多,那么还是有些力不从心。实际在开发中我们都是使用第三方工具,本案例中我们将使用jQuery插件validation进行表单的校验。

插件的步骤:

  1. 插件的下载
  2. 导入工具(依赖的js文件(jQuery的js文件, jQuery-invalidate插件, 语言包的js文件))
  3. 填写form表单, 要给表单绑定校验的validate验证方法
  4. 在form表单元素中指定校验规则

1、工具下载

下载地址:

https://github.com/jquery-validation/jquery-validation/releases/download/1.17.0/jquery-validation-1.17.0.zip

帮助文档地址:

https://jqueryvalidation.org/documentation/

文件目录介绍:

 自学JavaWeb第五天jQuery进阶

 

 

2、工具导入

依赖的js文件(jQuery的js文件, jQuery-invalidate插件, 语言包的js文件)

注意:

导入是有顺序的:

 自学JavaWeb第五天jQuery进阶

 

 

3、表单绑定验证方法

使用validate需要手动声明,需要对哪个表单进行校验,就给哪个表单绑定validate()方法。

<script type="text/javascript">

$(function () {

//为指定表单加入校验

$("#表单 ID").validate();

});

</script>

4、为校验加入规则

validate()方法中可以指定添加规则:

<script type="text/javascript">

$(function () {

//为指定表单加入校验

$("#表单 ID").validate({

rules:{

name1:{

规则 1:规则值,

规则 2:规则值

},

name2:{

规则 1:规则值,

规则 2:规则值

}

}

});

});

</script>

校验规则速查表:

 自学JavaWeb第五天jQuery进阶

 

 

5、测试案例-注册表单验证

代码准备:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>表单验证</title>

</head>

<body>

<form id="f1">

<table border="1" width="100%" cellpadding="0" cellspacing="0">

<tr>

<td colspan="3"><font color="cornflowerblue" size="5">测试表单</font></td>

</tr>

<tr>

<td width="40%">用户名(必填字段,长度范围6~10)</td>

<td colspan="2">

<input type="text" name="username"  />

</td>

</tr>

<tr>

<td width="40%">Email(符合邮件格式)</td>

<td colspan="2">

<input type="text" name="email" />

</td>

</tr>

<tr>

<td width="40%">出生日期(日期格式)</td>

<td colspan="2">

<input type="text" name="birthday" />

</td>

</tr>

<tr>

<td width="40%">薪资(数字)</td>

<td colspan="2">

<input type="text" name="sal" />

</td>

</tr>

<tr>

<td width="40%">一天工作时长(值范围6~16)</td>

<td colspan="2">

<input type="text" name="workForday" />

</td>

</tr>

<tr>

<td width="40%">密码(必须填写)</td>

<td colspan="2">

<input type="text" name="pwd" id="pwd"/>

</td>

</tr>

<tr>

<td width="40%">确认密码(必须填写,且与密码值要相同)</td>

<td colspan="2">

<input type="text" name="repwd" />

</td>

</tr>

<tr>

<td width="40%"></td>

<td colspan="2">

<input type="submit" value="注册" />

</td>

</tr>

</table>

</form>

</body>

</html>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<!--为规则添加样式-->

<style type="text/css">

label{

color: red;

}

</style>

<!--导入工具-->

<script type="text/javascript" src="js/jquery-3.3.1.js" ></script>

<script type="text/javascript" src="js/jquery.validate.js" ></script>

<script type="text/javascript" src="js/messages_zh.js" ></script>

<script type="text/javascript">

$(function(){

//为表单绑定校验方法

$("#f1").validate({

//加入校验规则

rules:{

//name的name属性的值

username:{

required:true,

/*minlength:6,

maxlength:10*/

rangelength:[6,10]

},

email:{

email:"email"

},

birthday:{

dateISO:"YYYY-MM-dd"

},

sal:{

number:true

},

workForday:{

range:[6,16]

},

pwd:{

required:true

},

repwd:{

required:true,

equalTo:"#pwd"

}

},

//自定义提示错误信息

messages:{

username:{

required:"亲, 这是必须要填写的哦...",

rangelength:"亲, 用户名的长度必须在${0}到${1}个字符之间..."

}

}

})

})

</script>

</head>

<body>

<form id="f1">

<table border="1" width="100%" cellpadding="0" cellspacing="0">

<tr>

<td colspan="3"><font color="cornflowerblue" size="5">测试表单</font></td>

</tr>

<tr>

<td width="40%">用户名(必填字段,长度范围6~10)</td>

<td colspan="2">

<input type="text" name="username"  />

</td>

</tr>

<tr>

<td width="40%">Email(符合邮件格式)</td>

<td colspan="2">

<input type="text" name="email" />

</td>

</tr>

<tr>

<td width="40%">出生日期(日期格式)</td>

<td colspan="2">

<input type="text" name="birthday" />

</td>

</tr>

<tr>

<td width="40%">薪资(数字)</td>

<td colspan="2">

<input type="text" name="sal" />

</td>

</tr>

<tr>

<td width="40%">一天工作时长(值范围6~16)</td>

<td colspan="2">

<input type="text" name="workForday" />

</td>

</tr>

<tr>

<td width="40%">密码(必须填写)</td>

<td colspan="2">

<input type="text" name="pwd" id="pwd"/>

</td>

</tr>

<tr>

<td width="40%">确认密码(必须填写,且与密码值要相同)</td>

<td colspan="2">

<input type="text" name="repwd" />

</td>

</tr>

<tr>

<td width="40%"></td>

<td colspan="2">

<input type="submit" value="注册" />

</td>

</tr>

</table>

</form>

</body>

</html>

 

 

6、为规则自定义错误信息

messages 可以为已经定好的规则自定义错误信息.

<script type="text/javascript">

$(function () {

//为指定表单加入校验

$("#表单 ID").validate({

rules:{

name1:{

规则 1:规则值,

规则 2:规则值

}

},

messages:{

name1:{

规则 1:"自定义错误信息"

}

}

});

});

</script>

 自学JavaWeb第五天jQuery进阶

 

 

动态取值:rangelength:[6,10]

${0}: 动态取出第一个值

${1}: 动态取出第二个值

 自学JavaWeb第五天jQuery进阶

 

 

(二)案例-注册表单验证

1、案例描述

需求说明与分析:

 自学JavaWeb第五天jQuery进阶

 

 

需求:

  1. 用户名, 密码, 确认密码, 邮箱, 出生日期不能为空
  2. 用户名的长度在6-12个字符之间
  3. 密码和确认密码必须一致
  4. Email必须符合邮箱格式
  5. 出生日期必须符合date日期类型

2、代码准备

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>案例-注册表单验证</title>

<style type="text/css">

.tab{

width: 800px;

height: 300px;

}

.tab,.tab tr td{

border: 1px solid darkgray;

}

.tab tr th{

color: green;

}

.t_right{

text-align: right;

width: 15%;

}

</style>

</head>

<body>

<form id="regist" action="/" method="post">

<table border="1" class="tab" cellspacing="0">

<tr>

<th colspan="2">用户注册</th>

</tr>

<tr>

<td class="t_right">用户名:</td>

<td><input type="text" name="username"/></td>

</tr>

<tr>

<td class="t_right">密码:</td>

<td><input type="password" id="pwd" name="pwd"/></td>

</tr>

<tr>

<td class="t_right">确认密码:</td>

<td><input type="password" name="repwd"/></td>

</tr>

<tr>

<td class="t_right">Email:</td>

<td><input type="text" name="email"/></td>

</tr>

<tr>

<td class="t_right">出生日期:</td>

<td><input type="text" name="birthday"/></td>

</tr>

<tr style="text-align: center;">

<td colspan="2"><input type="submit" name="sub" value="注  册"/></td>

</tr>

</table>

</form>

</body>

</html>

 

3、代码实现

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

.tab{

width: 800px;

height: 300px;

}

.tab,.tab tr td{

border: 1px solid darkgray;

}

.tab tr th{

color: green;

}

.t_right{

text-align: right;

width: 15%;

}

label{

color: red;

}

</style>

<!--导入插件-->

<script type="text/javascript" src="js/jquery-3.3.1.js" ></script>

<script type="text/javascript" src="js/jquery.validate.js" ></script>

<script type="text/javascript" src="js/messages_zh.js" ></script>

<script type="text/javascript">

//页面加载事件

$(function(){

//为表单绑定校验方法

$("#regist").validate({

//加入校验规则

rules:{

username:{

required:true,

rangelength:[6,12]

},

pwd:{

required:true,

rangelength:[3,8]

},

repwd:{

required:true,

rangelength:[3,8],

equalTo:"#pwd"

},

email:{

required:true,

email:true

},

birthday:{

required:true,

dateISO:"YYYY-MM-dd"

}

},

messages:{

username:{

required:"用户名不能为空",

rangelength:"用户名长度必须在6-12个字符之间"

},

pwd:{

required:"密码不能为空",

rangelength:"密码长度必须在3-8个字符之间"

},

repwd:{

required:"确认密码不能为空",

rangelength:"密码长度必须在3-8个字符之间",

equalTo:"两次密码不一致"

},

email:{

required:"邮箱不能为空",

email:"邮箱格式不正确"

},

birthday:{

required:"出生日期不能为空",

dateISO:"日期格式不正确"

}

}

})

})

</script>

</head>

<body>

<form id="regist" action="/" method="post">

<table border="1" class="tab" cellspacing="0">

<tr>

<th colspan="2">用户注册</th>

</tr>

<tr>

<td class="t_right">用户名:</td>

<td><input type="text" name="username"/></td>

</tr>

<tr>

<td class="t_right">密码:</td>

<td><input type="password" id="pwd" name="pwd"/></td>

</tr>

<tr>

<td class="t_right">确认密码:</td>

<td><input type="password" name="repwd"/></td>

</tr>

<tr>

<td class="t_right">Email:</td>

<td><input type="text" name="email"/></td>

</tr>

<tr>

<td class="t_right">出生日期:</td>

<td><input type="date" name="birthday"/></td>

</tr>

<tr style="text-align: center;">

<td colspan="2"><input type="submit" name="sub" value="注  册"/></td>

</tr>

</table>

</form>

</body>

</html>

 

上一篇:事务的传播行为解析(Transaction propagation: Required,RequiresNew,Nested)


下一篇:CF1374A Required Remainder 题解