jQuery中的事件和动画

今日日志

最后修改日期:2020-4-27

学习内容

  1. jQuery的事件
  2. jQuery的动画效果

练习内容

  1. 手风琴效果练习

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		<style>
    			*{margin: 0;padding: 0;}
    			.aq,.nav{
    				float: left;
    			}
    			.nav{
    			}
    			.aq{
    				width: 954px;
    				height: 600px;
    				background-color: #F7FBF1;
    				padding-left: 50px;
    			}
    			div.nav>.nav_title{
    				width: 200px;
    				height: 40px;
    				padding-top: 16px;
    				background-color: #E3E3E3;
    				color: #333333;
    				font: 15px "microsoft yahei";
    				font-weight: 600;
    				text-align: center;
    				border-top: 1px solid #E3E3a3;
    			}
    			div.nav>.nav_conts{
    				display: none;
    				padding: 10px 0px;
    				text-align: center;
    				width: 200px;
    				background-color: #F6F6F6;
    			}
    			div.aq>.aq_answer{
    				width: 954px;
    				height: 57px;
    				border-bottom: dashed #E3E3E3 1px;
    				font-family: "microsoft yahei";
    				font-size: 14px;
    				font-weight: 600;
    				color: #333333;
    				
    			}
    			div.aq>.aq_conts{
    				display: none;
    				width: 954px;
    				font-family: "microsoft yahei";
    				font-size: 12px;
    				margin: 0px 20px 20px;
    				padding: 0px 0px 0px 20px;
    			
    			}
    		</style>
    		<script src="js/jquery-2.2.4.min.js"></script>
    		<script>
    			var flag = 0;
    			$(function(){
    				$(".nav_title").click(function(){
    					$(this).next().slideToggle(function(){
    					})
    					.siblings(".nav_conts").slideUp();
    				});
    				$(".aq_answer").click(function(){
    					$(this).next().slideToggle()
    					.siblings(".aq_conts").slideUp();
    				});
    			})
    		</script>
    	</head>
    	<body>
    		<div class="nav">
    			<div class="nav_title">投保帮助</div>
    			
    			<div class="nav_title">支付指南</div>
    				<div class="nav_conts">
    					<ul>
    						<li>信用卡快捷</li>
    						<li>储存卡快捷</li>
    						<li>信用卡分期支付</li>
    					</ul>
    				</div>
    			<div class="nav_title">还原常见问题</div>
    			<div class="nav_title">资料下载</div>
    			<div class="nav_title">关于我们</div>
    				<div class="nav_conts">
    					<ul>
    						<li>公司简介</li>
    						<li>联系我们</li>
    						<li>友情提醒</li>
    					</ul>
    				</div>
    			<div class="nav_title">关于平安好车主</div>
    		</div>
    		<div class="aq">
    			<div class="aq_answer">1.支付成功后多久能拿到正式保单?</div>
    				<div class="aq_conts">
    					<p>A、车险网上支付成功后,座席会在24小时内主动联系您核实地址后安排配送。一般1到2个工作日便可收到正式纸质保单。</p>
    					<p>B、其他保险产品在支付成功后</p>
    				</div>
    			<div class="aq_answer">2.没有开通网上银行,如何付款?</div>
    			<div class="aq_conts">
    				<p>荐您使用信用卡或储蓄卡的快捷支付,无需开通网银</p>
    				<p>如您附近有拉卡拉,也推荐您使用拉卡拉完成付款</p>
    			</div>
    			<div class="aq_answer">3.银行显示已扣除,但没有生成保单?</div>
    			<div class="aq_answer">4.网上银行祝福需要注意什么?</div>
    			<div class="aq_answer">5.为何我们推荐使用信用卡快捷支付?</div>
    			<div class="aq_answer">6.信用卡快捷支付不用输密码就可以支付,安全吗?</div>
    		</div>
    	</body>
    </html>
    
    

易错点和经验

  1. 在jQuery中,如果“同一个”jQuery对象有N个操作,我们就可以使用像上面这种“链式操作”的方式。

    例如

    $(function () {
        $("h3").mouseover(function () {
            $("p").css("display","block");
        });
        $("h3").mouseout(function () {
            $("p").css("display", "none");
        });
    })
    //使用链式操作后的等效代码
    $(function () {
        $("h3").mouseover(function () {
            $("p").css("display","block");
        }).mouseout(function () {
            $("p").css("display", "none");
        });
    })
    
  2. margin:0 auto;可以居中 行内元素的行高为line-height

jQuery中的事件

页面载入事件

  • 和js中的window.onload相对应的有$(document).ready()方法

window.onload和$(document).ready()的区别

  1. $(document).ready()可以提高页面的响应速度,仅仅是DOM元素加载完成就可以执行,而window.onload除了DOM元素加载完成外还需要等待所有外部文件加载完成才可以执行。
  2. window.onload方法只能调用1次,如果多次调用,则执行最后一个window.onload方法中的代码。$(document).ready()可以多次执行。

$(document).ready()的四种写法

$(document).ready(functin(){
    //第一种写法
})

jQuery(document).ready(function(){
    //第二种写法
})

$(function(){
    //第三种写法
})

jQuery(function(){
    //第四种写法
})

鼠标事件

鼠标事件说明
click鼠标单击事件
dbclick双击事件
mouseover移入事件
mouseout移出事件
mousemove移动事件
mousedown按下事件
mouseup松开事件

单击事件

$("a").click(function(){
	//函数内容
})
  • 在jQuery中任何元素都可以添加单击事件

鼠标移入和移出事件

mouseover和mouseout
  • 鼠标进入选中元素或者子元素时都会触发。
  • 鼠标离开选中元素或者子元素时都会触发。
mouseenter和mouseleave
  • 鼠标进入选中元素时才会触发,进入子元素不触发。
  • 鼠标离开选中元素时才会触发,离开子元素不触发。

键盘事件

keypress事件

检测按键实例

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src=""></script>
    <script type="text/javascript">
        $(function () {
            $(window).keypress(function (event) {
                document.write("你输入的字符是:" + String.fromCharCode(event.which));
            });
        })
    </script>
</head>
<body>
</body>
</html>
  • 其中event.which检测按下哪个键返回该键的ASCII码
  • fromCharCode将ASCII吗转换为字符

keydown事件

  • 和keypress的区别是keydown是键盘按下的一瞬间触发,两个事件都会触发但keydown的触发优先级高于keypress
  • keydowm能够检测a~z的字符和fn等功能按键,keypress只能触发字符按键

keyup事件

  • 键盘在松开后触发的事件

  • 常用于密码强度检测,在字符输入后进行密码长度和强度的判断。

字符串长度判断

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="js/jquery-2.2.4.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#txt").keyup(function () {
                var str = $(this).val().toString();
                $("#num").text(str.length);
            })
        })
    </script>
</head>
<body>
    <input id="txt" type="text"/>
    <div>输入字符长度为:<span id="num">0</span></div>
</body>
</html>

表单事件

focus()和blur()

对表单的聚焦和失焦事件

适用的表单类型:

  1. 单行文本框text;
  2. 多行文本框textarea;
  3. 下拉列表select;

onchange()

表单文本字符串变化事件

适用的表单类型

  1. 单行文本框text;
  2. 多行文本框textarea;
  3. 下拉列表select;

select()

select事件的具体过程是从鼠标按键被按下,到鼠标开始移动并选中内容的过程。这个过程并不包括鼠标键的放开。

使用的表单类型

  1. 单行文本框text;
  2. 多行文本框textarea;

滚动事件

$(window).scroll(fn)//用法

scrollTop();//取得垂直滚动条距离顶部的位置
scrollTop(value);//设置垂直滚动条距离顶部的位置

scrollLeft();//取得水平滚动条距离左侧的位置
scrollLeft(value);//设置水平滚动条距离左侧的位置

固定栏目

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type="text/css">
        body{height:1800px;}
        #box1,#box2
        {
            display:inline-block;
            width:100px;
            height:100px;
        }
        #box1
        {
            background-color:Red;
        }
        #box2
        {
            background-color:Orange;
            position:fixed;
        }
    </style>
    <script type="text/javascript" src=""></script>
    <script type="text/javascript">
        $(function () {
            //获取box2距离顶部的距离
            var top = $("#box2").offset().top;
            //根据滚动距离判断定位
            $(window).scroll(function () {
                //当滚动条距离大于box2距离顶部的距离时,设置固定定位
                if ($(this).scrollTop() > top) {
                    $("#box2").css({ "position": "fixed", "top": "0" });
                }
                //当滚动条距离小于于box2距离顶部的距离时,设置相对定位
                else {
                    $("#box2").css({ "position": "relative" });
                }
            });
        })
    </script>
</head>
<body>
    <div id="box1"></div><br />
    <div id="box2"></div>
</body>
</html>

回顶部特效

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type="text/css">
        body
        {
            height:1800px;
        }
        #back-to-top
        {
            position:fixed;
            right:50px;
            bottom:50px;
            display:none; /*设置默认情况下元素为隐藏状态*/
            width:40px;
            height:40px;
            color:white;
            background-color:#45B823;
            font-family:微软雅黑;
            font-size:15px;
            font-weight:bold;
            text-align:center;
            cursor:pointer;
        }
    </style>
    <script type="text/javascript" src=""></script>
    <script type="text/javascript">
        $(function () {
            /*根据滚动距离判断按钮是否显示或隐藏*/
            $(window).scroll(function () {
                if ($(this).scrollTop() > 300) {
                    $("#back-to-top").css("display","inline-block");
                }
                else {
                    $("#back-to-top").css("display","none");
                }
            });
            /*实现点击滚动回顶部*/
            $("#back-to-top").click(function () {
                $("html,body").scrollTop(0);
            });
        })
    </script>
</head>
<body>
    <div id="back-to-top">回到顶部</div>
</body>
</html>

绑定/解绑事件

$().on("事件类型" , "事件函数")//使用on方法绑定事件和用给元素添加基本事件等效
//但是on方法可以给还未创建的元素进行事件绑定,因为可能会在某些函数内创建本不存在元素。

$().off("事件类型")//将元素的事件解绑,可以解绑绑定的事件也可以解绑使用基本事件添加的事件

合成事件

语法

$().hover(fn1,fn2)
//用hover代替鼠标移入移出两个方法,其中fn1为移入的方法,fn2为移出的方法
  • 其中在CSS的伪类选择器中的:hover只能更换CSS的样式

一次事件

$().one("事件类型", fn)//给选定的元素绑定只执行一次的事件

jQuery动画

显示与隐藏

$().hide(speed,callback)//隐藏
$(),show(speed,callback)//显示

$().toggle()//切换   
$().toggle(speed , callback);  

淡入与淡出

$().fadeIn(speed , callback)//淡出
$().fadeOut(speed , callback)

$().fadeToggle()//切换
$().fadeTo(speed , opacity , callback)//切换透明度

滑入与滑出

$().slideDown(speed , callback)
$().slideUp(speed , callback)//一般需要一个标志变量判断元素当前的状态来确定是滑入还是滑出

slideToggle(speed , callback)

自定义动画

$().animate(params , speed , callback)
//其中params是{"属性1":"属性值1","属性2":"属性值2",……, "属性n":"属性值n"}
//当parms的属性值前加+=时动画的属性值变化是累加值而不是最终值
//当需要改变颜色时需要加入jquery.color.js包否则jQuery不能识别颜色属性
//其中的回调函数在动画变化之后执行,可以用来给变化后的元素添加样式

队列动画

$().animate().animte()…….animte()//其中的anime()可以使用以上任意的动画效果,动画效果按照顺序显示。

动画的停止

语法

$().stop(clearQueue,gotoEnd)//连个参数类型都为布尔值,分别为是否清空队列,是否跳转到最后一个动画
参数取值说明
stop()等价于stop(false,false),仅仅停止“当前执行”这段动画,后面的动画还可以继续执行
stop(true)等价于stop(true,false),停止所有动画,包括当前执行的动画
stop(true,true)停止所有动画,但是允许执行当前动画
stop(false,true)停止“当前执行”这段动画,然后调到最后一个动画,并且执行最后一个动画
  • 其中stop(true,true)将队列切断后跳转到最后的动画执行,但当前动画就是最后的动画所以将当前动画执行完毕。

动画延迟

$().delay(speed)//放在队列动画中延迟
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值