首页 > 其他分享 >触发点击事件方法,解除绑定事件,事件冒泡/捕获,阻止默认事件,事件委托

触发点击事件方法,解除绑定事件,事件冒泡/捕获,阻止默认事件,事件委托

时间:2022-09-01 20:56:17浏览次数:70  
标签:function console log 绑定 事件 var div event 冒泡

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.box1 {
				width: 300px;
				height: 300px;
				background-color: red;
			}
			.box2 {
				width: 200px;
				height: 200px;
				background-color: #0000FF;
			}
			.box3 {
				width: 100px;
				height: 100px;
				background-color: #00FFFF;
			}
		</style>
	</head>
	<body>
		<!-- <div style="width: 100px; height: 100px; background-color: red; margin-left: 100px;  margin-top: 100px;" id="div"></div> -->
		<!-- <ul>
			<li >a</li>
			<li >a</li>
			<li >a</li>
			<li >a</li>
		</ul> -->
<!-- 		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
		<br> -->
		<ul>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>
			<li>6</li>
			<li>7</li>
			<li>8</li>
			<li>9</li>
			<li>10</li>
			<li>11</li>
			<li>12</li>
			<li>13</li>
			<li>14</li>
		</ul>
		
		<!-- 事件冒泡 -->
		<a href="#">111</a>
		<div class="box1">
			<div class="box2">
				<div class="box3"></div>
			</div>
		</div>
		
		<script type="text/javascript">
		
		// 三种触发点击事件
		// div.onclick
		// div.addEventListener()//普遍用这个
		// div.attachEvent() //支持id9以上浏览器,其他不支持,指向window
		
		//click和onclick方法区别
		 //click比onclick先执行
		 // div.addEventListener('onclick',function(){
		 // 	console.log('b');
		 // })
		 // div.addEventListener('click',function(){
		 // 	console.log('a');
		 // },false)
		
			// var div = document.getElementsByTagName('div')[0];
			//三种触发事件方式
			//一.只能触发一个事件
			// div.onclick = function() {
			// 	console.log('a');
			// };
			
			//二.可以触发多个事件
			// div.addEventListener('click',function(){
			// 	console.log('b')
			// },false)
			// div.addEventListener('click',function(){
			// 	console.log('c')
			// },false)
			
			//三.IE9独用 可以触发多个事件  attachEvent --- 指向window  ,需要使用call进行指向
			// div.attachEvent('onclick',function() {
			// 	console.log('d');
			// });
			
			//  练习题:点击li显示对应的序号
		// 	var li = document.getElementsByTagName('li');
		// 	var len = li.length;
			
		// 	for(var i = 0 ; i < len ; i++) {
		// 		(function (i) {
		// 			li[i].addEventListener( 'click',function() {
		// 				console.log(i)
		// 			},false);
		// 		}(i))
		// };
		
		//封装兼容性的addEvent(elem,type,handle)方法
		//  function addEvent(elem,type,handle) {
		// 	if(elem.addEventListener){
		// 		elem.addEventListener(type,handle,false);
		// 	}else if(elem.attachEvent) {
		// 		elem.attachEvent('on' + type , function() {
		// 			handle.call(elem);
		// 		})
		// 	}else {
		// 		elem['on' + type] = handle;
		// 	}
		// }
		// const dom = document.getElementById('div')
	 //   addEvent(dom,'click',fun);
	   
	 //   function fun() {
		//    console.log('0000')
	 //   }
		
		//解除绑定事件
		//1.第一种方法
		 // var div = document.getElementsByTagName('div')[0];
	  //   div.onclick = function() {
		 //  console.log('a')
		 // this.onclick = null;//执行一次不在执行
	  // }
	  //2.第二种方法 removeEventListener
	  // var div = document.getElementsByTagName('div')[0];
	 //   div.addEventListener('click',test,false);
		// function test() {
		// 	console.log('www');
		// }
		//div.removeEventListener('click',test,false);
		
		//3.第三种方法 ele.detachEvent('on' + type ,fn);
		
		//触发顺序:先捕获,后冒泡
		//事件冒泡和事件捕获的区别:1.执行顺序的不同,2.事件捕获使用true  
		//事件冒泡:结构上嵌套关系的元素(非视觉上的),会存在事件冒泡功能(打印顺序为:自子元素向父元素冒泡)
		// var box1 = document.getElementsByClassName('box1')[0];
		// var box2 = document.getElementsByClassName('box2')[0];
		// var box3 = document.getElementsByClassName('box3')[0];
		// box1.addEventListener('click',function(){
		// 	console.log('a');
		// },false);
		// box2.addEventListener('click',function(){
		// 	console.log('b');
		// },false);
		// box3.addEventListener('click',function(){
		// 	console.log('c');
		// },false);
		
		//事件捕获:结构上嵌套关系的元素(非视觉上),会存在事件捕获,(打印顺序为:字父元素向子元素进行捕获)   IE没有捕获事件 
		
		// var box1 = document.getElementsByClassName('box1')[0];
		// var box2 = document.getElementsByClassName('box2')[0];
		// var box3 = document.getElementsByClassName('box3')[0];
		// box1.addEventListener('click',function(){
		// 	console.log('a');
		// },true);
		// box2.addEventListener('click',function(){
		// 	console.log('b');
		// },true);
		// box3.addEventListener('click',function(){
		// 	console.log('c');
		// },true);
		 
		 //不能冒泡的事件
		// focus,blur,change,submit,reset,Select
		
		//取消冒泡  W3C  event.stopPropagation(不支持ie9一下)     cancelBubble = true  true 取消冒泡  false 进行冒泡(IE独有)
		// document.onclick = function() {
		// 	console.log('111');
		// }
		// var div = document.getElementsByTagName('div')[0]; 
		// div.onclick = function(e) {
		// 	//e.stopPropagation();
		// 	//e.cancelBubble =true;
		// 	stopBubble(e);//调用封装的函数
		// 	this.style.background = 'green';
		// }
		// //封装方法 取消冒泡的方法
		// function stopBubble(event) {
		// 	if(event.stopPropagation) {
		// 		event.stopPropagation();
		// 	}else{
		// 		event.cancelBubble = true;
		// 	}
		// }
		
		//oncontextmenu 弹出主菜单栏
		//避免出现菜单栏(阻止默认事件)  1.return false (以对象熟悉的方法注册的事件才生效)   e.preventDefault (W3C标准 ,ie9以下不兼容)  e.returnValue = false (只兼容ie9)
		// document.oncontextmenu = function(e) {
		// 	console.log('a');
		// 	//e.preventDefault();
		// 	//return false;
		// 	//e.returnValue = false;
		// 	preventDefault(e);
		// }
		// var a = document.getElementsByTagName('a')[0];
		// //点击a标签时,会置顶展示,为了解决默认事件,使用该方法
		// a.onclick = function() {
		// 	return false;
		// }
		// //封装方法  组织默认事件(菜单栏)
		// function preventDefault(event) {
		// 	if(event.preventDefault) {
		// 		event.preventDefault();
		// 	}else if(event.returnValue) {
		// 		event.returnValue = true;
		// 	}else{
		// 		return false;
		// 	}
		// }
		
		//event 可以打印出参数  而ie9下打印e的参数需要使用 window.event
		// var div = document.getElementsByTagName('div')[0];
		// div.onclick = function(e) {
		// 	var event = e || window.event;
		// }
		
		 
		//事件委托 利用事件冒泡,和事件源对象进行处理
		//优点:性能:不需要在循环一个一个绑定事件 ,灵活:当有新的子元素不需要重新绑定
		//event.target 火狐只有这个  event.srcElement ie只有这个   这两个chrome都有
		// var ul = document.getElementsByTagName('ul')[0];
		// ul.onclick = function(e) {
		// 	var event = e || window.event;
		// 	var target = event.target || event.srcElement;
		// 	console.log(target.innerText);
		// }
		
		 //onmouseenter   onm ouseleave  onm ousemove 预习
		 //拖拽功能
			
			
			
			
			
		</script>
	</body>
</html>

  

标签:function,console,log,绑定,事件,var,div,event,冒泡
From: https://www.cnblogs.com/wsx123/p/16647782.html

相关文章

  • js 实现冒泡排序及优化方案
    //冒泡排序//原理就是每一轮循环,将一个最大的值放冒泡到最后//1.每一趟都是比较相邻两个元素,如果后一个元素大于前一个,则交换两个元素//2.第一趟从第一个元素开始......
  • JS 事件盘点
    1.鼠标事件鼠标在元素上移动mousemove鼠标从该元素上移出mouseout鼠标移动到该元素mouseover鼠标点击(单击)click鼠标双击dbclick鼠标右击contextmenu可以配......
  • D365: Business event(二)自定义功能事件
    D365F&O中自定义功能事件Demo(销售订单行更新剩余交货量)1,创建Contract类,继承BusinessEventsContract 2,创建Event类,继承BusinessEventsBase 3,在触发点注册事件......
  • C#线程:使用事件等待句柄发送信号
    最简单的信号发送结构是事件等待句柄(注意它和C#的事件是无关的)。事件等待句柄有三种实现:AutoResetEvent、ManualResetEvent(Slim)和CountdownEvent。前两种基于通用的Event......
  • uniapp 监听用户主动截屏事件
    一、uni.onUserCaptureScreen(CALLBACK)监听用户主动截屏事件,用户使用系统截屏按键截屏时触发此事件。平台差异说明AppH5微信小程序支付宝小程序百度小程序字节......
  • 关于backingStore和updateRequest事件
    关于backingStore的同步从QWidgetBackingStore::sync说起,调用关系如下:QWidgetPrivate::syncBackingStore=>QWidgetBackingStore::sync=>QWidgetBacki......
  • Windows事件ID大全
    51Windows无法找到网络路径。请确认网络路径正确并且目标计算机不忙或已关闭。如果Windows仍然无法找到网络路径,请与网络管理员联系。52由于网络上有重名,没有连接。......
  • Java easy_trans字典绑定,Java字典注解绑定
     ================================©Copyright蕃薯耀 2022-08-31https://www.cnblogs.com/fanshuyao/ 一、引入Maven依赖基于<mybatisPlus.version>3.4.3.3</my......
  • xamarinform框架里Clicked事件取消任务,调用接口,
    xamarinform框架里Clicked事件取消任务,调用接口,如何写方法 ......
  • 事件委托
    事件委托是利用冒泡的原理,把事件加到父级上,触发执行效果。优点:给父级元素加事件(可以提高性能)只在内存中开辟了一块空间,节省资源同时减少了dom操作,提高性能对于新添加的......