jquery的事件自动触发
- 事件触发的介绍
事件都是在特定条件下发生的,不同类型的事件触发的实际时机是无法预测的。开发者无法知道用户何时单击按钮提交表单,或者何时输入文本。但是在很多情况下,开发人员需要在脚本中控制事件触发的实际。
例如:设计一个弹出广告,广告上面虽然有小小的关闭标签提供了广告关闭,但是也应该有一个小小的条件,那就是让广告三秒钟后就会关闭
- 事件触发的方式
//方法一
// $(".father").trigger(“click”);
//方法二
// $(".father").triggerHandler(“click”);
- 既然有两种事件触发的行为,那么它们必定有区别(有两种区别)
第一个区别:注意,如果利用trigger()自动触发事件,会触发事件冒泡,如果使用triggerHandler()
* 自动触发事件,不会触发事件冒泡
*
* 第二个区别:trigger(),如果利用trigger自动触发事件,会触发默认行为、triggerHandler()自动触发事件
* 不会触发默认的行为(不会触发事件冒泡也不会触发默认事件行为)
- 那么难搞的问题来咯,如果自动触发默认行为,不止回弹,还会跳转,例如我想trigger自动触发a标签的默认事件和默认行为,不止让他回弹一下怎么办呢?
那就需要在a标签中写一个span标签对a内容进行包装 ,那么以后就不需要触发a标签了,直接监听span的标签
代码演示
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件自动触发</title>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
}
.father{
width: 200px;
height: 200px;
background: red;
}
.son{
width: 100px;
height: 100px;
background:cadetblue;
}
</style>
<script type="text/javascript" src="js/Jquery.js"></script>
<script type="text/javascript">
$(function(){
//自动出发了默认行为,不止回弹以外还会跳转(如果你想用trigger自动触发a的默认事件和默认行为,那就需要对a进行包装)
//监听span标签的
$("span").trigger("click");
alert("a");
});
$("span").trigger("click");//自动触发a的默认行为还会进行跳转
</script>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
<a href="http://www.baidu.com"><span>注册</span></a>
<form action="http://www.taobao.com">
<input type="text" />
<input type="submit" />
</form>
</body>
</html>
两种跳转方式的区别
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件自动触发</title>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
}
.father{
width: 200px;
height: 200px;
background: red;
}
.son{
width: 100px;
height: 100px;
background:cadetblue;
}
</style>
<script type="text/javascript" src="js/Jquery.js"></script>
<script type="text/javascript">
$(function(){
/*
* 事件出发的方法有两种,
* 方法一、
* $(".father").trigger("click");
* 方法二、
* $(".father").triggerHandler("click");
* 两种方法都行那么实际开发的时候用那个呢,区别在哪里呢?
* 第一个区别:注意,如果利用trigger()自动触发事件,会触发事件冒泡,如果使用triggerHandler()
* 自动触发事件,不会触发事件冒泡
*
* 第二个区别:trigger(),如果利用trigger自动触发事件,会触发默认行为、triggerHandler()自动触发事件
* 不会触发默认的行为(不会触发事件冒泡也不会触发默认事件行为)
* */
//给儿子添加一个顶级事件
// $(".son").click(function(){
// alert("son");
// });
//给父亲添加一个顶级事件
// $(".father").click(function(){
// alert("father");
// });
//方法一
// $(".father").trigger("click");
//方法二
// $(".father").triggerHandler("click");
//$(".son").trigger("click");
//$(".son").triggerHandler("click");
//$("input[type='submit']").click(function (){
// alert('submit');
//});
//$("input[type='submit']").trigger("click");
//$("input[type='submit']").triggerHandler("click");
$("a").click(function(){
alert("a");
});
// $("a").triggerHandler("click"); 自动触发顶级事件没有跳转
//监听a标签的
$("a").trigger("click");
});
</script>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
<a href="http://www.baidu.com"><span>注册</span></a>
<form action="http://www.taobao.com">
<input type="text" />
<input type="submit" />
</form>
</body>
</html>