web核心 10-jquery 显示和隐藏标签 (重要) 定时器显示广告 事件的点击,解绑 抽奖 插件机制 validate

jquery的效果方法–显示和隐藏标签(掌握)

show()---显示
hide()---隐藏
toggle()---切换显示/隐藏

让标签隐藏:
在这里插入图片描述
让标签显示:
在这里插入图片描述
让标签切换:
在这里插入图片描述

在这里插入图片描述

slideDown()---滑动显示
slideUp()---滑动隐藏
slideToggle()---切换显示/隐藏
fadeIn()---淡入显示
fadeOut()---淡出隐藏
fadeToggle()---切换显示/隐藏

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 400px;
            height: 200px;
            background-color: red;
        }
    </style>

    <script src="js/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            $("#bt1").click(function(){
                // 让标签隐藏
                //$("#d1").hide(6000,demo);
                $("#d1").slideUp(3000,demo);
                //$("#d1").fadeOut(3000,demo);
            })

            $("#bt2").click(function(){
                // 让标签显示
                //$("#d1").show(6000);
                //$("#d1").slideDown(3000,demo);
                $("#d1").fadeIn(3000,demo);
            })

            $("#bt3").click(function(){
                // 让标签切换显示/隐藏
                //$("#d1").toggle(6000);
                //$("#d1").slideToggle(3000);
                $("#d1").fadeToggle(3000);
            })

        })

        // 动画执行完毕要调用一次指定的方法
        function demo() {
            alert("ok~~");
        }
    </script>
</head>
<body>
        <div id="d1">abcd/1234</div>
        <hr/>
        <input id="bt1" type="button" value="隐藏" />
        <input id="bt2" type="button" value="显示" />
        <input id="bt3" type="button" value="切换" />
</body>
</html>

案例

广告窗的定时显示和隐藏
技术:
1 定时器  SetTimeOut(...)
2 显示和隐藏标签方法

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            //设置一个定时器3秒钟之后显示图片
            setTimeout(showAd,3000);
        })

        function showAd(){
            $("#d1").slideDown();
            //设置一个定时器3秒钟之后隐藏图片
            setTimeout(hideAd,3000);
        }

        function hideAd(){
            $("#d1").slideUp();
        }

    </script>
</head>
<body>
        <div id="d1" style="display: none">
            <img src="img/tupian2.jpg" width="100%"  id="imgs"/>
        </div>
</body>
</html>

jquery的遍历循环方法(掌握)

1普通遍历

$(function () {
   var arr=$("元素");
   for(var i=0;i<arr.length;i++)
   {
   	  alert($(arr[i]).text());
   }
})

在这里插入图片描述

2 jq对象方式遍历

$(function () {
// a:元素的角标   b:元素角标对应的元素
$("元素").each(function(a,b){
	alert(a+":"+$(b).text());
  })
})

在这里插入图片描述

3 全局方式遍历

$(function () {
var arr=$("元素");
$.each(arr,function (a,b) {
	alert(a+":"+$(b).text());
 })
})

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190802201821181.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FkYW1DYWZl,size_16,color_FFFFFF,t_70)

4 jq3.0的新特性 --遍历方式

$(function () {
var arr=$("元素");
for(aaa of arr){
   alert($(aaa).text())
}})

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>

    <!--jquery的循环遍历(普通方式)-->
    <!--<script>
        $(function(){
            var arr=$("ul li");
            for(var i=0;i<arr.length;i++){
                alert($(arr[i]).text());
            }
        })
    </script>-->

    <!--jquery的循环遍历(jquery对象的方法)-->
   <!-- <script>
        $(function(){
            $("ul>li").each(function(a,b){
                alert($(b).text());
            })
        })
    </script>-->

    <!--jquery的循环遍历(jquery全局方法)-->
   <!-- <script>
        $(function(){
            var arr=$("ul>li");
            $.each(arr,function(a,b){
                alert($(b).text());
            })
        })
    </script>-->


    <!--jquery的循环遍历(3.x的版本能用)-->
    <script>
        $(function(){
            var arr=$("ul>li");
            for(aaa of arr){
                alert($(aaa).text());
            }
        })
    </script>

</head>
<body>
        <ul>
            <li>北京</li>
            <li>上海</li>
            <li>广州</li>
            <li>深圳</li>
        </ul>
</body>
</html>

jq的解绑事件方式以及第二种事件绑定方式

On()  jquery的事件绑定方法

$("按钮元素").on("click",function () {
	alert("abcd");
})

在这里插入图片描述

off() jquery的事件解绑方法

$("按钮元素").click(function () {
    //指定解绑
    $("#bt1").off("事件名");
    //全部解绑
    $("#bt1").off();
})

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            // 第一种事件的绑定方式  $("#i1").事件名(function(){})
            $("#i1").click(function(){
                alert(123);
            })
            // 第二种事件的绑定方式 $("#i1").on("事件名",function(){})
            $("#i1").on("mouseover",function(){
                alert("abc");
            })

            // 事件的解绑  off(..)
            $("#i2").click(function(){
                // 指定解绑鼠标移入事件
                //$("#i1").off("mouseover");
                // 指定解绑点击事件
                //$("#i1").off("click");

                //全部解绑
                $("#i1").off();
            })
        })
    </script>
</head>
<body>
        <input id="i1" type="button" value="绑定事件" />
        <input id="i2" type="button" value="解绑事件" />
</body>
</html>

jq的事件切换

1 普通方式
2 事件切换hover()方式--鼠标移入和移出     (重要)
3 链式方式

在这里插入图片描述在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
    <!--<script>
        $(function(){
            $("#imgs").on("mouseover",function(){
                alert(1111);
            })
            $("#imgs").on("mouseout",function(){
                alert(2222);
            })

            $("#imgs").on("click",function(){
                alert(333);
            })
        })
    </script>-->

   <!--<script>
        $(function(){
            $("#imgs").mouseover(function(){alert(1111)}).mouseout(function(){alert(2222)}).click(function(){alert(333)})
        })
    </script>-->


    <script>
        $(function(){
            $("#imgs").hover(function(){
                alert(1111);
            },function(){
                alert(2222);
            })
        })
    </script>

</head>
<body>
        <img id="imgs" src="img/666.bmp" />
</body>
</html>
案例:抽奖案例
需求:当用户点击开始按钮时,小像框中的像片快速切换。当用户点击停止按钮时,小像框中的像片停止切换,大像框中也会显示与小像框相同的像片

在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>jquery案例之抽奖</title>
    <script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
    <!--
    该案例有三个状态:
    页面加载的状态:页面一加载要做什么事情?
    1 设置定时器让小相框的图片轮播
    2 开始按钮不可用,停止按钮可用
    
    点击停止的状态:要做什么事情?
    1 要给点击停止的按钮做点击事件
    2 清除小相框的定时器
    3 让大相框的图片地址和小相框的图片src一致
    4 停止按钮不可用 开始按钮可用
    
    点击开始的状态:要做什么事情?
    1 给点击开始按钮设置点击事件
    2 重新设置一个定时器,调用图片轮播的方法
    3 开始按钮不可用,停止按钮可用
    -->

    <script>
        var time;
        $(function(){
            //1 让小相框的图片轮播
            time=setInterval(changeImg,100);
            //2 开始按钮不可用,停止按钮可用
            $("#startID").prop("disabled",true);
            //3 要给点击停止的按钮做点击事件
            $("#stopID").on("click",function(){
                //4 清除小相框的定时器
                clearInterval(time);
                //5 让大相框的图片地址和小相框的图片src一致
                var srcvalue=$("#img1ID").prop("src");
                $("#img2ID").hide();
                $("#img2ID").prop("src",srcvalue);
                $("#img2ID").slideDown(3000);
                //6 停止按钮不可用 开始按钮可用
                $("#stopID").prop("disabled",true);
                $("#startID").prop("disabled",false);
            })

            //7 给点击开始按钮设置点击事件
            $("#startID").on("click",function(){
                //8 重新设置一个定时器,调用图片轮播的方法
                time=setInterval(changeImg,100);
                //9 开始按钮不可用,停止按钮可用
                $("#startID").prop("disabled",true);
                $("#stopID").prop("disabled",false);
            })
        })

        //实现图片轮播的功能
        var index=1;
        function changeImg(){
            $("#img1ID").prop("src","img/man0"+index+".jpg");
            index++;
            if(index>9){
                index=0;
            }
        }

    </script>


</head>
<body>
<!-- 小相框 -->
<div style="border-style:dotted;width:160px;height:100px">
    <img id="img1ID" src="img/man00.jpg" style="width:160px;height:100px"/>
</div>

<!-- 大相框 -->
<div style="border-style:double;width:700px;height:500px;position:absolute;left:500px;top:10px">
    <img id="img2ID" src="img/man00.jpg" width="700px" height="500px"/>
</div>

<!-- 开始按钮 -->
<input id="startID"  type="button" value="点击开始" style="width:150px;height:150px;font-size:22px">

<!-- 停止按钮 -->
<input id="stopID" type="button" value="点击停止" style="width:150px;height:150px;font-size:22px" >

</body>
</html>

1 第一状态

在这里插入图片描述
2 第二状态
在这里插入图片描述
3 第三状态
在这里插入图片描述

JQuery插件机制

jquery对外提供了插件机制,可以用来扩展jQuery的功能
如果对jquery的方法不满意,可以使用该提供的机制进行该方法的二次封装或自己扩展方法
二次封装或扩展对象的方法: $("元素").方法()
$.fn.extend()
二次封装或扩展全局的方法: $.each()
$.extend()

复选框的全选全不选
在这里插入图片描述
通过插件机制扩展jquery对象的方法

在这里插入图片描述
扩展jquery全局方法

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
   <!-- <script>
        $(function(){
            // 复选框的全选
            $("#i1").click(function(){
                $("input[type=checkbox]").prop("checked",true);
            })
            // 复选框的全不选
            $("#i2").click(function(){
                $("input[type=checkbox]").prop("checked",false);
            })
        })
    </script>-->

    <script>
        /*
        * 为jquery对象扩展2个方法:checked()  unchecked()
        * checked():让复选框全选
        * unchecked():让复选框全不选
        *
        * */

        // 通过插件机制扩展jquery对象的方法  jQuery.fn.extend({要扩展的方法名:function(){},要扩展的方法名:function(){}})
       /* $.fn.extend({
            checked:function(){
                $("input[type=checkbox]").prop("checked",true);
            },
            unchecked:function(){
                $("input[type=checkbox]").prop("checked",false);
            }
        })*/

       // 过插件机制扩展jquery全局方法($.方法名())  Query.extend(object)
       /*$.extend({
           max:function(a,b){
               return a>b?a:b;
           },
           min:function(a,b){
               return a<b?a:b;
           }
       })
*/

        $(function(){
            // 复选框的全选
            $("#i1").click(function(){
                $("input[type=checkbox]").checked();
            })
            // 复选框的全不选
            $("#i2").click(function(){
                $("input[type=checkbox]").unchecked();
            })
        })


        var max=$.max(10,20);
        alert(max);
        var min=$.min(10,20);
        alert(min);
    </script>


</head>
<body>
        <form>
            <input type="checkbox" />抽烟
            <input type="checkbox" />喝酒
            <input type="checkbox" />烫头
        </form>
        <hr/>
        <input id="i1" type="button" value="全选" />
        <input id="i2" type="button" value="全不选" />


</body>
</html>

案例:使用JQuery的提供插件validate完成表单校验

需求:
在学习JavaScript时,我们手动的完成过表单数据的校验,
而表单数据的校验在开发中非常常见,属于通用功能范畴,
实际在开发中我们一般使用都是第三方工具。
在这里我们将使用jQuery的扩展的一个validate插件进行表单的校验。
validate插件的操作步骤:
1 导入jquery.js文件 (js库)
2 导入validate.js文件
3 获取整个表单  $("#ID名")
4 对表单做校验  $("#ID名").validate()

$("#ID名").validate
(
	{
		rules:{name的属性名:{校验器1:值1...}},
		messages:{name的属性名:{校验器1:提示信息1...}}
	}
		
)

在这里插入图片描述
在这里插入图片描述

08-validate使用.html 页面代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<!--1 导入js库-->
	<script src="js/jquery-3.3.1.js"></script>
	<!--2 导入validate文件-->
	<script src="js/jquery.validate.js"></script>
	<script src="js/messages_zh.js"></script>
	<!--3 获取表单做校验-->
	<!--<script>
		$(function(){
		   /*
		   	校验格式:$("#formId").validate({key:{key:{}}});
		   	$("#formId").validate({
				rules:
				{
				    要校验的文本框的name属性:{校验器:校验器的值},
				    要校验的文本框的name属性:{校验器:校验器的值},
				    要校验的文本框的name属性:{校验器:校验器的值}
				}
				,
				messages:
				{
                    要校验的文本框的name属性:{校验器:"错误之后的友情提示"},
                    要校验的文本框的name属性:{校验器:"错误之后的友情提示"},
                    要校验的文本框的name属性:{校验器:"错误之后的友情提示"}
				}
			});*/
		})
	</script>-->


	<script>
		$(function(){
		    $("#formId").validate({

				rules:
				{
                    username:{required:true},
                    password:{required:true,digits:true},
                    repassword:{required:true,equalTo:"#password"},
                    zuixiaozhi:{required:true,min:9},
                    shuzhiqujian:{required:true,range:[100,200]}
				}

				/*,
				messages:
				{
                    username:{required:"<font color='red'>不能为空</font>"},
                    password:{required:"<font color='red'>不能为空</font>",digits:"必须输入数字"},
                    repassword:{required:"<font color='red'>不能为空</font>",equalTo:"两次输入不一致"},
                    zuixiaozhi:{required:"<font color='red'>不能为空</font>",min:"不能小于{0}"},
                    shuzhiqujian:{required:"不能为空",range:"取值要在{0}~{1}"}
				}
				*/
			})
		})
	</script>


	<body> 

		<form id="formId" action="06-抽奖.html">
				必填:<input type="text" name="username"/> <br/>
				必填数字:<input type="text" name="password" id="password"/> <br />
				必填重复:<input type="text" name="repassword"/> <br />
				最小值:<input type="text" name="zuixiaozhi"/> <br />
				区间:<input type="text" name="shuzhiqujian"/> <br />
				<input type="submit" value="提交"/>
		</form>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述

表单校验
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/jquery-3.3.1.js"></script>
		<script src="js/jquery.validate.js"></script>
		<script src="js/messages_zh.js"></script>
		<script>
			$(function(){
			    //表单数据的校验
				$("#empForm").validate({
					rules:
					{
                        realname:{required:true},
                        username:{required:true,rangelength:[5,8]},
                        psw:{required:true,rangelength:[6,12]},
                        psw2:{required:true,equalTo:"#psw"},
                        gender:{required:true},
						age:{required:true,range:[26,50]},
                        edu:{required:true},
                        birthday:{required:true,dateISO:true},
						email:{required:true,email:true},
                        card:{required:true,
							cardlength:true,
						    cardformat:true}
					}
				});

				// 自定义校验器的格式
				/*$.validator.addMethod(name,function(value,element,params){
					/!*
					* 参数介绍:
					* name:自定义校验器的名称(cardlength)
					* value:要校验的这个文本框的value属性值      $("#card").val();
					* element:要校验的这个文本框元素  		   $("#card")
					* params:自定义校验器传递的值(true)
					*
					* *!/
                    //实现功能
				})*/

				// 要校验身份证的长度   返回true:代表校验通过  返回false:代表不通过,要去做友情提示
				$.validator.addMethod("cardlength",function(value,element,params){
					 if(params){
					     // 校验
						 if(value.length==15 || value.length==18){

						     return true;
						 }

						 return false;
					 }
				})

                // 要校验身份证的格式
			    $.validator.addMethod("cardformat",function(value,element,params){
					if(params){
						if(value.length==15){
							// 正则表达式
							var reg15=/^[0-9]{15}$/;
							return reg15.test(value);
						}

						if(value.length==18){
						    var reg18=/^[0-9]{18}|[0-9]{17}[X|x]$/;
						    return reg18.test(value);
						}
					}
				})
			})
		</script>


	<body>
	<p>员工信息录入</p>

	<form name="empForm" id="empForm" method="post" action="06-抽奖.html">
		<table border=1>
			<tr>
				<td>真实姓名(不能为空 ,没有其他要求)</td>
				<td><input type="text" id="realname" name="realname" />
				</td>
			</tr>
			<tr>
				<td>登录名(登录名不能为空,长度应该在5‐8之间
				</td>
				<td><input type="text" id="username" name="username" /></td>
			</tr>
			<tr>
				<td>密码(不能为空,长度6‐12字符或数字):</td>
				<td><input type="password" id="psw" name="psw" /></td>
			</tr>
			<tr>
				<td>重复密码密码(不能为空,长度6‐12字符或数字):</td>
				<td><input type="password" id="psw2" name="psw2" /></td>
			</tr>
			<tr>
				<td>性别(必选其一)</td>
				<td>
					<input type="radio" id="gender_male" value="m" name="gender"/>&nbsp;男
					<input type="radio" id="gender_female" value="f" name="gender"/>&nbsp;女
					<label class="error" for="gender" style="display: none;">必须选择一个性别
					</label>
				</td>
			</tr>
			<tr>
				<td>年龄(必填26‐50):</td>
				<td><input type="text" id="age" name="age" /></td>
			</tr>
			<tr>
				<td>你的学历:</td>
				<td> <select name="edu" id="edu">
					<option value="">-请选择你的学历-</option>
					<option value="a">专科</option>
					<option value="b">本科</option>
					<option value="c">研究生</option>
					<option value="e">硕士</option>
					<option value="d">博士</option>
				</select>
				</td>
			</tr>
			<tr>
				<td>出生日期(1982/09/21):</td>
				<td><input type="text" id="birthday" name="birthday" value="" /></td>
			</tr>
			<tr>
				<td>兴趣爱好:</td>
				<td colspan="2">
					<input type="checkbox" name="checkbox1" id="qq1"/>&nbsp;乒乓球 &nbsp;
					<input type="checkbox" name="checkbox1" id="qq2" value="1" />&nbsp;羽毛球
					<input type="checkbox" name="checkbox1" id="qq3" value="2" />&nbsp;上网
					<input type="checkbox" name="checkbox1" id="qq4" value="3" />&nbsp;旅游
					<input type="checkbox" name="checkbox1" id="qq5" value="4" />&nbsp;购物
					<label class="error" for="checkbox1" style="display: none;">必须选一个</label>
				</td>
			</tr>
			<tr>
				<td align="left">电子邮箱:</td>
				<td><input type="text" id="email" name="email" /></td>
			</tr>
			<tr>
				<td align="left">身份证(15‐18):</td>
				<td><input type="text" id="card" name="card" /></td>
			</tr>
			<tr>
				<td></td>
				<td><input type="submit" name="firstname" id="firstname" value="保存"></td>
			</tr>
		</table>
	</form>
	</body>

</html>

jquery的方法整理:

1 jQuery操作标签的文本和value值方法

html([值])  获取的标签体		<div><a href=#>文本</a></div>
text([值])  获取的标签文本内容		<div>文本</div>
val([值])   获取的是标签的value值       <input type="text" value="abcd/1234" /> abcd/1234

2 jquery操作标签样式

css(name,[value]) 获取/设置指定的CSS样式
addClass(value)   给指定的标签添加样式
removeClass(value)  删除指定的样式	 
toggleClass(value) 切换样式,如果没有样式,则添加,如果有样式,则删除

3 juqery操作标签的各种属性

attr(属性名,[值])方法或prop(属性名,[值])方法
ps:建议1.6以前可以用attr来操作属性 1.6以后可以用prop来操作属性

4 jquery指定插入标签的方法

append(element) 添加成最后一个子元素,两者之间是父子关系
prepend(element) 添加成第一个子元素,两者之间是父子关系

before(element) 添加到当前元素的前面,两者之间是兄弟关系
after(element) 添加到当前元素的后面,两者之间是兄弟关系

remove() 删除元素
empty() 清空元素的所有子元素

5 jquery操作标签的显示和隐藏方法

show() --显示
hide() --隐藏
toggle()  --切换

slideDown()---滑动显示
slideUp()---滑动隐藏
slideToggle()---切换显示/隐藏

fadeIn()---淡入显示
fadeOut()---淡出隐藏
fadeToggle()---切换显示/隐藏

6 jquery的循环遍历方法(4种)

1 for(var i=0;i<数组.length;i++){}
2 $("数组").each(function(a,b){})  a:代表循环的索引号  b:索引号的内容
3 $.each(数组,function(a,b){})	a:代表循环的索引号  b:索引号的内容  $.方法--全局方法  
4 jquery3.x以上版本的循环新功能:for(变量 of 数组){}

7 jquery绑定事件的方式

1 $(元素).事件名(function(){})
2 $(元素).on("事件名",function(){})  $(元素).bind("事件名",function(){})  

8 jquery的事件解绑

$(元素).off("事件名") --指定解绑指定的事件
$(元素).off() --全部解绑事件

9 jquery的事件切换方式

1 普通方式
2 链式方式
3 jquery的hover方式--只能切换移入和移出
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值