JQ基础入门(下)

今日内容介绍:

重写JS案例:省市联动、左右选择、表单校验

今日学习目标:

1.能够使用JQ为标签添加属性或样式

2.能够为指定标签添加字标签或兄弟标签

3.学会给标签绑定事件

使用jQuery完后省市二级联动

步骤分析:

第一步:确定事件(change事件),在绑定的函数里面获取用户选择的省份

第二步:创建二维数组来存储省份和城市

第三步:遍历二维数组中的省份(与用户选择的省份进行比较)【使用JQ的遍历操作】

第四步:接着遍历数组中的城市

第五步:创建一个城市文本节点

第六步:创建option元素节点

第七步:将文本节点添加到元素节点中【使用JQ的文档操作方法】

第八步:获取第二个下拉列表并将option元素节点添加进去

第九步:清除第二个下拉列表的option内容

技术点分析:数组的遍历操作

  方式一:

方式二:

遍历用法,核心代码:

<script src="../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script>
		
			$(function(){
				//解释:如下为遍历循环,i代表前面集合的脚标
				$("img").each(function(i){
				this.src = "../img/"+(i+1)+".jpg"
				
			});
			//解释:前面集合代表待遍历集合,后面i参数代表脚标,n代表每一个i对应的具体参数值
			$.each(["你好",'你是sb',1,2,9,111111],function(i,n){
					alert("item"+i+"value"+n)
				});
			});
</script>

html核心代码:
<body>
		<img />
		<img />
</body>

 文档处理操作:append()与appendTo()

插入字段和标签:核心代码:

<link rel="stylesheet" type="text/css" href="../css/1.css" />
		<script src="../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script>
			$(function() {
				//解释:appendTo将XX标签插入到XX标签 addClass给该标签添加一个class样式
				$("p").appendTo("div").addClass("test");
				//解释:将XX字段追击到XX标签的尾部
				$("p").append("<b>你好</b>")
			});
</script>

html核心代码:
<body>
		<p>I would like to say: </p>
		<div></div>
		<div></div>
</body>

 清除子节点内容:

<script src="../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script>
			$(function() {
				//解释:清除子节点内容
				$("#btn").click(function() {
					$("p").empty();
				});
				//解释:添加子节点内容
				$("#btnn").click(function() {
					$("p").append("hello,<span>span<br /></span><a href='插入.html'>点击</a>")
				});
                                //解释:清除部分子节点,两个效果一样
				$("#btnnn").click(function(){
					$("span").remove();
                                       // $("span").detach();
				});
			});
</script>
html核心代码:
<body>
		<h1>
			Hello,
			<p>hello,
				<span>
					span<br />
				</span>
				<a href="插入.html">点击</a>
			</p>
		</h1>
		<input type="button" id="btn" value="清除子节点" />
		<input type="button" id="btnn" value="添加文字" />
                <input type="button" id="btnnn" value="清除子节点" />

</body>

 使用JQ进行省市二级联动:核心代码:

<script src="../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script>
			$(function() {
				//2.创建城市二维数组
				var cities = new Array(3);
				cities[0] = new Array("武汉市", "黄冈市", "襄阳市", "荆州市");
				cities[1] = new Array("长沙市", "郴州市", "株洲市", "岳阳市");
				cities[2] = new Array("石家庄市", "邯郸市", "廊坊市", "保定市");
				cities[3] = new Array("郑州市", "洛阳市", "开封市", "安阳市");
				//解释:查找id,并绑定change事件
				$("#province").change(function() {
					//1.获取用户选择的省份
					var val = this.value;
					//10.清除子节点
					$("#city").empty();
					//3.遍历二维数组中的省份
					$.each(cities, function(i,n) {
						//4.判断用户选择的省份和遍历的省份
						if(val==i){
//							$("#city").append(n)
							//5.遍历该省份下的所有城市
							$.each(n, function(j,k) {
								//下列注释为jQ最优添加方法
//								$("#city").append("<option>"+k+"</option>")
								//6.创建城市文本节点
								var textNode = document.createTextNode(k);
								//7.创建option元素节点
								var opEle = document.createElement("option");
								//8.将城市文本节点添加到option元素节点中,在下列方法实现中append与appendTo都是jQuery中的方法,因此元素需要使用$符号将Dom转换为JQ
								$(opEle).append(textNode);
								//9.将optioon元素节点追加到第二个下拉列表中
								$(opEle).appendTo($("#city"));
							});
						}
					});
				});
			});
</script>

html核心代码:
<tr>
								<td>籍贯</td>
								<td>
									<select id="province">
										<option>--请选择--</option>
										<option value="0">湖北</option>
										<option value="1">湖南</option>
										<option value="2">河北</option>
										<option value="3">河南</option>
									</select>
									<select id="city">

									</select>
								</td>
</tr>

左右选择JQ实现:

1.分析:

第一步:确定事件(鼠标单击事件:click)

第二步:获取左侧下拉列表被选中的option[$("#left option:selected")假设左侧select定义了一个id=left]

第三步:将获取到的option添加到右侧的下拉列表。(append方法的使用)

核心代码:

<script src="../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		$(function(){
			//1.选中单击去右边
			$("#selectOneToRigth").click(function(){
				$("#left option:selected").appendTo($("#right"));
			});
			//2.单击全部去右边
			$("#selectAllToRight").click(function () {
				$("#left option").appendTo($("#right"));
			});
			//3.选中双击去右边
			$("#left option").dblclick(function(){
				$("#left option:selected").appendTo($("#right"));
			});
		});
</script>
html核心代码:
<td>
					<span style="float: left;">
						<font color="green" face="宋体">已有商品</font><br/>
						<select multiple="multiple" style="width: 100px;height: 200px;" id="left" >
							<option>IPhone6s</option>
							<option>小米4</option>
							<option>锤子T2</option>
						</select>
						<p><a href="#" style="padding-left: 20px;" id="selectOneToRigth">&gt;&gt;</a></p>
						<p><a href="#" style="padding-left: 20px;" id="selectAllToRight">&gt;&gt;&gt;</a></p>
					</span>
					<span style="float: right;">
						<font color="red" face="宋体">未有商品</font><br/>
						<select multiple="multiple" style="width: 100px;height: 200px;" id="right">
							<option>三星Note3</option>
							<option>华为6s</option>
						</select>
						<p><a href="#" >&lt;&lt;</a></p>
						<p><a href="#" >&lt;&lt;&lt;</a></p>
					</span>
</td>

事件绑定

1.点击展开事件:

<script src="../../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			$(function(){
				$(".head").addClass("test");
				//事件绑定
				$(".head").bind("click",function(){
					var $content = $(this).next();
					if ($content.is(":visible")) {
						$content.hide();
					} else{
						$content.show();
					}
				});
				
				$("#bt").click(function(){
					//事件解绑
					$(".head").unbind("click");
				});
			});
</script>
html核心代码:
<body>
		<div id="panel">
			<h5 class="head">什么是JQ?</h5>
			<div id="content">
				巴拉巴拉
			</div>
		</div>
		<input type="button" name="bt" id="bt" value="点击解绑事件" />
</body>

2.鼠标滑过事件:

<script src="../../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			$(function(){
				$("#bt").click(function(){
					$.each(["mouseover","mouseout"], function(i,n) {
						$(".head").unbind(n);
					});
				});
				$("#bt2").click(function(){
					$(".head").mouseover(function(){
					$(this).next().show();
				}).mouseout(function(){
					$(this).next().hide();
				});
				});
			});
</script>
html核心代码:
<body>
		<div id="panel">
			<h5 class="head">什么是JQ?</h5>
			<div id="content">
				巴拉巴拉
			</div>
		</div>
		<input type="button" name="bt" id="bt" value="点击解绑事件" />
		<input type="button" name="bt2" id="bt2" value="点击绑定鼠标滑过事件" />
</body>

 3.事件合成一:

核心代码:

<script src="../../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			$(function(){
				//解释如下代码:hover(over,out)两个参数,第一个参数是代表鼠标移入的操作,第二个参数是鼠标移出的操作,内部均由事件控制
				$(".head").hover(
					function(){
						$(this).addClass("test");
					},function(){
						$(this).removeClass("test");
					}
				);
			});
</script>
html核心代码:
<body>
		<div id="panel">
			<h5 class="head">什么是JQ?</h5>
			<div id="content">
				巴拉巴拉
			</div>
		</div>
</body>

4.事件合成二:

核心代码:

<script src="../../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			$(function(){
				//解释如下代码:toggle后面可以添加许多方法轮换操作,每次点击都会轮换方法
				$(".head").toggle(
					function(){
						$(this).addClass("test");
					},function(){
						$(this).removeClass("test");
					},function(){
						$(this).next().hide();
					},function(){
						$(this).next().show();
					}
				);
			});
</script>
html核心代码:
<body>
		<div id="panel">
			<h5 class="head">什么是JQ?</h5>
			<div id="content">
				巴拉巴拉
			</div>
		</div>
</body>

案例  表单校验:

在实际开发中一般使用第三方工具,本案例使用JQ插件validation进行表单校验。

因为validation是基于JQ的,所以在导库的时候导在JQ库之后

.js与.min.js的区别在于前者是格式标准的js库,可供开发者查看,后者是全部写在一行中,两者的代码量是一样的。

核心代码:

<script src="../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/jquery.validate.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/messages_zh.js" type="text/javascript" charset="utf-8"></script>
		<script>
			$(function() {
				$("#registForm").validate({
					rules: {
						user: {
							required: true,
							minlength: 3
						},
						password: {
							required: true,
							digits: true,
							minlength: 6
						},
						repassword: {
							required: true,
							equalTo: "[name='password']"
						},
						email: {
							required: true,
							email: true
						},
						username: {
							required: true,
							maxlength: 3
						},
						sex: {
							required: true
						}

					},
					messages: {
						user: {
							required: "用户名不能为空!",
							minlength: "用户名不能少于3个字符!"
						},
						password: {
							required: "密码不能为空!",
							digits: "密码必须为数字!",
							minlength: "密码不能少于6位!"
						},
						repassword: {
							required: "确认密码不能为空!",
							equalTo: "两次输入密码不一致"
						},
						email: {
							required: "邮箱不能为空!",
							email: "邮箱格式不正确!"
						},
						username: {
							required: "姓名不能为空!",
							minlength: "名称至多三个字!"
						},
						sex: {
							required: "性别必须勾选!"
						}
					},
					errorElement: "label", //用来创建错误提示信息标签,默认的就是label,可以不用再次声明
					success: function(label) { //验证成功后的执行的回调函数
						//lable指向上面那个错误提示信息标签label
						label.text("") //清空错误提示信息
							.addClass("success"); //加上自定义的success类
					}
					
					//问题:当减少一个字符,或者使不能满足时,这里的success类还存在,导致不仅有红色字体还有对的图片
					
				});
			});
</script>
html核心代码:
<form action="#" method="get" id="registForm">
					<div id="father">
						<div id="form2">
							<table border="0px" width="100%" height="100%" align="center" cellpadding="0px" cellspacing="0px" bgcolor="white">
								<tr>
									<td colspan="2">
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
										<font size="5">会员注册</font>&nbsp;&nbsp;&nbsp;USER REGISTER
									</td>
								</tr>
								<tr>
									<td width="180px">
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
										<label for="user">用户名</label>
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="text" name="user" size="35px" id="user" />
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
										<label for="password">密码</label>
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="password" name="password" size="35px" id="password" />
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 确认密码
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="password" name="repassword" size="35px" />
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Email
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="text" name="email" size="35px" id="email" />
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 姓名
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="text" name="username" size="35px" />
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 性别
									</td>
									<td>
										<span style="margin-right: 155px;">
											<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="radio" name="sex" value="男"/>男
											<input type="radio" name="sex" value="女"/>女<em></em>
										</span>
										<label for="sex" class="error" style="display: none;"></label>
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 出生日期
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="text" name="birthday" size="35px" />
									</td>
								</tr>
								<tr>
									<td>
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 验证码
									</td>
									<td>
										<em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input type="text" name="yanzhengma" />
										<img src="../img/yanzhengma.png" style="height: 18px;width: 85px;" />
									</td>
								</tr>
								<tr>
									<td colspan="2">
										&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
										<input type="submit" value="注      册" height="50px" />
									</td>
								</tr>
							</table>
						</div>
					</div>
</form>

存在问题:表单校验时://问题:当减少一个字符,或者使不能满足时,这里的success类还存在,导致不仅有红色字体还有对的图片
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值