jQuery之事件冒泡&模拟操作

jQuery之事件冒泡&模拟操作


1.事件冒泡

    a,什么是事件冒泡?

        子节点产生的事件,会依次向上抛出给相应的父节点。

    b,如何取消事件冒泡?

        e.cancelBubble = true;

    c,事件对象有何作用?

        取消冒泡  --  e.cancelBubble = true;

        获取光标坐标  --  e.clientX/e.clientY

        找到事件源  --  e.target || e.srcElement;

    示例代码:/jQuery01/WebRoot/event/e3.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>事件冒泡</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <style type="text/css">
    	#d1{
    		width:200px;
    		height:200px;
    		border:1px solid red;
    	}
    </style>
    <script type="text/javascript">
    	function f1(e){
			alert('你点击的是一个链接');
			//取消事件冒泡
			e.cancelBubble = true;
        }
    	function f2(e){
			//alert('你点击的是一个div');
			//输出鼠标的x,y坐标
			alert(e.clientX+","+e.clientY);
        }
        //找到事件源
        function f3(e){
            //依据事件对象找到事件源
			var obj = e.target || e.srcElement;
			alert(obj.innerHTML);
        }
    </script>
  </head>
  <body>
  	<div id="d1" οnclick="f2(event);">
		<a href="javascript:;" οnclick="f1(event);">Click me</a>
	</div>
	<a href="javascript:;" οnclick="f3(event);">Click 1</a>
	<a href="javascript:;" οnclick="f3(event);">Click 2</a>
  </body>
</html>


2.jQuery实现事件冒泡

    a,获取事件对象

        click(function(e){

            //e:对底层的事件对象的一个封装

        });

    b,事件对象的属性

        event.type:事件类型

        event.target:返回事件源(是dom对象)

        event.pageX/pageY:获得光标坐标

        示例代码:/jQuery01/WebRoot/event/e4.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jQuery实现事件冒泡</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="../js/jquery-1.11.1.js"></script>
    <script type="text/javascript">
    	$(function(){
			$('a').click(function(e){
				//依据事件对象获取事件源
				//e是jQuery对象(封装了底层的事件对象)
				//target属性是jQuery的一个属性返回一个dom对象
				//var obj = e.target;
				//alert(obj.innerHTML);

				//通过事件对象获得光标坐标
				//alert(e.pageX+","+e.pageY);

				//事件类型
				alert(e.type);
			});
        });
    </script>
  </head>
  <body>
  	<a href="javascript:;">Click 1</a>
	<a href="javascript:;">Click 2</a>
  </body>
</html>

    c,停止冒泡

        event.stopPropagation()

        示例代码:/jQuery01/WebRoot/event/e5.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>停止冒泡</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="../js/jquery-1.11.1.js"></script>
    <style type="text/css">
    	#d1{
    		width:200px;
    		height:200px;
    		border:1px solid red;
    	}
    </style>
    <script type="text/javascript">
    	$(function(){
        	$('a').click(function(e){
        		alert('你点击的是一个链接');
        		//停止冒泡
        		e.stopPropagation();
            });
			$('#d1').click(function(e){
				alert('你点击的是一个div');
            });
        });
    </script>
  </head>
  <body>
  	<div id="d1">
		<a href="javascript:;">Click me</a>
	</div>
  </body>
</html>

    d,停止默认行为

        event.preventDefault()

        示例代码:/jQuery01/WebRoot/event/e6.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>停止默认行为</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="../js/jquery-1.11.1.js"></script>
    <script type="text/javascript">
    	$(function(){
        	$('a').click(function(e){
        		var flag = confirm('确定访问百度吗');
        		if(!flag){
        			//停止默认行为
        			//阻止浏览器的默认行为(链接地址发请求)
        			e.preventDefault()
                }
            });
        });
    </script>
  </head>
  <body>
	<a href="https://www.baidu.com/">Click me</a>
  </body>
</html>


3.模拟操作

    trigger('click')

    示例代码:/jQuery01/WebRoot/event/e7.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>模拟操作</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="../js/jquery-1.11.1.js"></script>
    <script type="text/javascript">
    	$(function(){
        	$('#b1').click(function(){
				//模拟用户点击了username文本输入框
				//即让username文本输入框产生焦点获得事件
				//$('#username').trigger('focus');

				//简写形式
				$('#username').focus();
            });
        });
    </script>
  </head>
  <body>
	username:<input id="username"/><br/>
	name:<input name="name"/><br/>
	<input id="b1" type="button" value="ClickMe"/>
  </body>
</html>


   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值