javascript中的事件绑定、事件冒泡、事件捕获和事件执行顺序

js冒泡、捕获事件及阻止冒泡方法详细总结 javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结。 事件冒泡是一个从子节点向祖先节点冒泡的过程; 事件捕获刚好相反,是从祖先节点到子节点的过程。 给一个jquery点击事件的例子: 代码如下: 代码如下: <!DOCTYPE html> <meta charset=”utf-8″> <title>test</title> <head> [removed][removed] [removed] $( 立即下载


抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享。

 

(一)事件绑定的几种方式


javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定、在js代码中绑定。下面的方式1、方式2属于在html中绑定事件,方式3、方式4和方式5属于在js代码中绑定事件,其中方法5是最推荐的做法。

方式1:

HTML的DOM元素支持onclick、onblur等以on开头属性,我们可以直接在这些属性值中编写javascript代码。当点击div的时候,下面的代码会弹出div的ID:

<div id="outestA" onclick="var id = this.id;alert(id);return false;"></div>

这种做法很显然不好,因为代码都是放在字符串里的,不能格式化和排版,当代码很多的时候很难看懂。这里有一点值得说明:onclick属性中的this代表的是当前被点击的DOM对象,所以我们可以通过this.id获取DOM元素的id属性值。


方式2:

当代码比较多的时候,我们可以在onclick等属性中指定函数名。

<script>

	function buttonHandler(thisDom)
	{
		alert(this.id);//undefined
		alert(thisDom.id);//outestA
		return false;
	}
</script>
<div id="outestA" onclick="return buttonHandler(this);"></div>

跟上面的做法相比,这种做法略好一些。值得一提的是:事件处理函数中的this代表的是window对象,所以我们在onclick属性值中,通过this将dom对象作为参数传递。

 

方式3:在JS代码中通过dom元素的onclick等属性

var dom = document.getElementById("outestA");
dom.onclick = function(){alert("1=" + this.id);};
dom.onclick = function(){alert("2=" + this.id);};

这种做法this代表当前的DOM对象。还有一点:这种做法只能绑定一个事件处理函数,后面的会覆盖前面的。


方式4:IE下使用attachEvent/detachEvent函数进行事件绑定和取消。

attachEvent/detachEvent兼容性不好,IE6~IE11都支持该函数,但是FF和Chrome浏览器都不支持该方法。而且attachEvent/detachEvent不是W3C标准的做法,所以不推荐使用。在IE浏览器下,attachEvent有以下特点。

a) 事件处理函数中this代表的是window对象,不是dom对象。

var dom = document.getElementById("outestA");  
dom.attachEvent('onclick',a);  
      
function a()  
{   
    alert(this.id);//undefined  
}

b) 同一个事件处理函数只能绑定一次。
var dom = document.getElementById("outestA");  
dom.attachEvent('onclick',a);  
dom.attachEvent('onclick',a);    
function a()  
{  
    alert(this.id);
}
虽然使用attachEvent绑定了2次,但是函数a只会调用一次。

c)不同的函数对象,可以重复绑定,不会覆盖。
var dom = document.getElementById("outestA");  
dom.attachEvent('onclick',function(){alert(1);});  
dom.attachEvent('onclick',function(){alert(1);});  

// 当outestA的click事件发生时,会弹出2个对话框 
匿名函数和匿名函数是互相不相同的,即使代码完全一样。所以如果我们想用detachEvent取消attachEvent绑定的事件处理函数,那么绑定事件的时候不能使用匿名函数,必须要将事件处事函数单独写成一个函数,否则无法取消。

方式5:使用W3C标准的addEventListener和removeEventListener。
这2个函数是W3C标准规定的,FF和Chrome浏览器都支持,IE6/IE7/IE8都不支持这2个函数。不过从IE9开始就支持了这2个标准的API。
// type:事件类型,不含"on",比如"click"、"mouseover"、"keydown";
// 而attachEvent的事件名称,含含"on",比如"onclick"、"onmouseover"、"onkeydown";
// listener:事件处理函数
// useCapture是事件冒泡,还是事件捕获,默认false,代表事件冒泡类型
addEventListener(type, listener, useCapture); 

a) 事件处理函数中this代表的是dom对象,不是window,这个特性与attachEvent不同。
var dom = document.getElementById("outestA");  
dom.addEventListener('click', a, false);  
      
function a()  
{   
    alert(this.id);//outestA  
}

b) 同一个事件处理函数可以绑定2次,一次用于事件捕获,一次用于事件冒泡。
var dom = document.getElementById("outestA");  
dom.addEventListener('click', a, false);  
dom.addEventListener('click', a, true);  
      
function a()  
{   
    alert(this.id);//outestA  
}

// 当点击outestA的时候,函数a会调用2次

如果绑定的是同一个事件处理函数,并且都是事件冒泡类型或者事件捕获类型,那么只能绑定一次。
var dom = document.getElementById("outestA");  
dom.addEventListener('click', a, false);  
dom.addEventListener('click', a, false);  
      
function a()  
{   
    alert(this.id);//outestA  
}

// 当点击outestA的时候,函数a只会调用1次

c) 不同的事件处理函数可以重复绑定,这个特性与attachEvent一致。

(二)事件处理函数的执行顺序


方式1、方式2和方式3都不能实现事件的重复绑定,所以自然也就不存在执行顺序的问题。方式4和方式5可以重复绑定特性,所以需要了解下执行顺序的问题。如果你写出依赖于执行顺序的代码,可以断定你的设计存在问题。所以下面的顺序问题,仅作为兴趣探讨,没有什么实际意义。直接上结论:addEventListener和attachEvent表现一致,如果给同一个事件绑定多个处理函数,先绑定的先执行。下面的代码我在IE11、FF17和Chrome39都测试过。
<script>
	window.onload = function(){
	<span style="white-space:pre">	</span>var outA = document.getElementById("outA");  
		outA.addEventListener('click',function(){alert(1);},false);
		outA.addEventListener('click',function(){alert(2);},true);
		outA.addEventListener('click',function(){alert(3);},true);
		outA.addEventListener('click',function(){alert(4);},true);
	};
</script>

<body>
	<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
	</div>
</body>
当点击outA的时候,会依次打印出1、2、3、4。这里特别需要注意:我们给outA绑定了多个onclick事件处理函数,也是直接点击outA触发的事件,所以不涉及事件冒泡和事件捕获的问题,即addEventListener的第三个参数在这种场景下,没有什么用处。如果是通过事件冒泡或者是事件捕获触发outA的click事件,那么函数的执行顺序会有变化。


(三) 事件冒泡和事件捕获


事件冒泡和事件捕获很好理解,只不过是对同一件事情的不同看法,只不过这2种看法都很有道理。
我们知道HTML中的元素是可以嵌套的,形成类似于树的层次关系。比如下面的代码:
<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
	<div id="outB" style="height:200; background:#0000ff;top:100px;position:relative;">
		<div id="outC" style="height:100px; background:#FFB90F;top:50px;position:relative;"></div> 
	</div>
</div>
如果点击了最内侧的outC,那么外侧的outB和outC算不算被点击了呢?很显然算,不然就没有必要区分事件冒泡和事件捕获了,这一点各个浏览器厂家也没有什么疑义。假如outA、outB、outC都注册了click类型事件处理函数,当点击outC的时候,触发顺序是A-->B-->C,还是C-->B-->A呢?如果浏览器采用的是事件冒泡,那么触发顺序是C-->B-->A,由内而外,像气泡一样,从水底浮向水面;如果采用的是事件捕获,那么触发顺序是A-->B-->C,从上到下,像石头一样,从水面落入水底。
事件冒泡见下图:


事件捕获见下图:

一般来说事件冒泡机制,用的更多一些,所以在IE8以及之前,IE只支持事件冒泡。IE9+/FF/Chrome这2种模型都支持,可以通过addEventListener((type, listener, useCapture)的useCapture来设定,useCapture=false代表着事件冒泡,useCapture=true代表着采用事件捕获。

<script>

	window.onload = function(){
		var outA = document.getElementById("outA");  
		var outB = document.getElementById("outB");  
		var outC = document.getElementById("outC");  
		
		// 使用事件冒泡
		outA.addEventListener('click',function(){alert(1);},false);
		outB.addEventListener('click',function(){alert(2);},false);
		outC.addEventListener('click',function(){alert(3);},false);
	};
 
</script>

<body>
	<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
		<div id="outB" style="height:200; background:#0000ff;top:100px;position:relative;">
			<div id="outC" style="height:100px; background:#FFB90F;top:50px;position:relative;"></div> 
		</div>
	</div>
</body>
使用的是事件冒泡,当点击outC的时候,打印顺序是3-->2-->1。如果将false改成true使用事件捕获,打印顺序是1-->2-->3。


(四) DOM事件流

DOM事件流我也不知道怎么解释,个人感觉就是事件冒泡和事件捕获的结合体,直接看图吧。


DOM事件流:将事件分为三个阶段:捕获阶段、目标阶段、冒泡阶段。先调用捕获阶段的处理函数,其次调用目标阶段的处理函数,最后调用冒泡阶段的处理函数。这个过程很类似于Struts2框中的action和Interceptor。当发出一个URL请求的时候,先调用前置拦截器,其次调用action,最后调用后置拦截器。

<script>

	window.onload = function(){
		var outA = document.getElementById("outA");  
		var outB = document.getElementById("outB");  
		var outC = document.getElementById("outC");  
		
		// 目标(自身触发事件,是冒泡还是捕获无所谓)
		outC.addEventListener('click',function(){alert("target");},true);
		
		// 事件冒泡
		outA.addEventListener('click',function(){alert("bubble1");},false);
		outB.addEventListener('click',function(){alert("bubble2");},false);
		
		// 事件捕获
		outA.addEventListener('click',function(){alert("capture1");},true);
		outB.addEventListener('click',function(){alert("capture2");},true);	
	};
 
</script>

<body>
	<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
		<div id="outB" style="height:200; background:#0000ff;top:100px;position:relative;">
			<div id="outC" style="height:100px; background:#FFB90F;top:50px;position:relative;"></div> 
		</div>
	</div>
</body>
当点击outC的时候,依次打印出capture1-->capture2-->target-->bubble2-->bubble1。到这里是不是可以理解addEventListener(type,handler,useCapture)这个API中第三个参数useCapture的含义呢?useCapture=false意味着:将事件处理函数加入到冒泡阶段,在冒泡阶段会被调用;useCapture=true意味着:将事件处理函数加入到捕获阶段,在捕获阶段会被调用。从DOM事件流模型可以看出,捕获阶段的事件处理函数,一定比冒泡阶段的事件处理函数先执行。

(五) 再谈事件函数执行先后顺序

在DOM事件流中提到过:

// 目标(自身触发事件,是冒泡还是捕获无所谓)
outC.addEventListener('click',function(){alert("target");},true);
我们在outC上触发onclick事件(这个是目标对象),如果我们在outC上同时绑定捕获阶段/冒泡阶段事件处理函数会怎么样呢?

<script>

	window.onload = function(){
		var outA = document.getElementById("outA");  
		var outB = document.getElementById("outB");  
		var outC = document.getElementById("outC");  
		
		// 目标(自身触发事件,是冒泡还是捕获无所谓)
		outC.addEventListener('click',function(){alert("target2");},true);
		outC.addEventListener('click',function(){alert("target1");},true);
		
		// 事件冒泡
		outA.addEventListener('click',function(){alert("bubble1");},false);
		outB.addEventListener('click',function(){alert("bubble2");},false);
		
		// 事件捕获
		outA.addEventListener('click',function(){alert("capture1");},true);
		outB.addEventListener('click',function(){alert("capture2");},true);

		
		
	};
 
</script>

<body>
	<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
		<div id="outB" style="height:200; background:#0000ff;top:100px;position:relative;">
			<div id="outC" style="height:100px; background:#FFB90F;top:50px;position:relative;"></div> 
		</div>
	</div>
</body>
点击outC的时候,打印顺序是:capture1-->capture2-->target2-->target1-->bubble2-->bubble1。由于outC是我们触发事件的目标对象,在outC上注册的事件处理函数,属于DOM事件流中的目标阶段。目标阶段函数的执行顺序:先注册的先执行,后注册的后执行。这就是上面我们说的,在目标对象上绑定的函数是采用捕获,还是采用冒泡,都没有什么关系,因为冒泡和捕获只是对父元素上的函数执行顺序有影响,对自己没有什么影响。如果不信,可以将下面的代码放进去验证。

// 目标(自身触发事件,是冒泡还是捕获无所谓)
outC.addEventListener('click',function(){alert("target1");},false);
outC.addEventListener('click',function(){alert("target2");},true);
outC.addEventListener('click',function(){alert("target3");},true);
outC.addEventListener('click',function(){alert("target4");},false);


至此我们可以给出事件函数执行顺序的结论了:捕获阶段的处理函数最先执行,其次是目标阶段的处理函数,最后是冒泡阶段的处理函数。目标阶段的处理函数,先注册的先执行,后注册的后执行。

(六) 阻止事件冒泡和捕获


默认情况下,多个事件处理函数会按照DOM事件流模型中的顺序执行。如果子元素上发生某个事件,不需要执行父元素上注册的事件处理函数,那么我们可以停止捕获和冒泡,避免没有意义的函数调用。前面提到的5种事件绑定方式,都可以实现阻止事件的传播。由于第5种方式,是最推荐的做法。所以我们基于第5种方式,看看如何阻止事件的传播行为。IE8以及以前可以通过 window.event.cancelBubble=true阻止事件的继续传播;IE9+/FF/Chrome通过event.stopPropagation()阻止事件的继续传播。

<script>

	window.onload = function(){
		var outA = document.getElementById("outA");  
		var outB = document.getElementById("outB");  
		var outC = document.getElementById("outC");  
		
		// 目标
		outC.addEventListener('click',function(event){
			alert("target");
			event.stopPropagation();
		},false);

		// 事件冒泡
		outA.addEventListener('click',function(){alert("bubble");},false);

		// 事件捕获
		outA.addEventListener('click',function(){alert("capture");},true);		
		
	};
 
</script>

<body>
	<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
		<div id="outB" style="height:200; background:#0000ff;top:100px;position:relative;">
			<div id="outC" style="height:100px; background:#FFB90F;top:50px;position:relative;"></div> 
		</div>
	</div>
</body>
当点击outC的时候,之后打印出capture-->target,不会打印出bubble。因为当事件传播到outC上的处理函数时,通过stopPropagation阻止了事件的继续传播,所以不会继续传播到冒泡阶段。


最后再看一段更有意思的代码:

<script>

	window.onload = function(){
		var outA = document.getElementById("outA");  
		var outB = document.getElementById("outB");  
		var outC = document.getElementById("outC");  
		
		// 目标
		outC.addEventListener('click',function(event){alert("target");},false);

		// 事件冒泡
		outA.addEventListener('click',function(){alert("bubble");},false);

		// 事件捕获
		outA.addEventListener('click',function(){alert("capture");event.stopPropagation();},true);		
		
	};
 
</script>

<body>
	<div id="outA" style="width:400px; height:400px; background:#CDC9C9;position:relative;">
		<div id="outB" style="height:200; background:#0000ff;top:100px;position:relative;">
			<div id="outC" style="height:100px; background:#FFB90F;top:50px;position:relative;"></div> 
		</div>
	</div>
</body>


执行结果是只打印capture,不会打印target和bubble。神奇吧,我们点击了outC,但是却没有触发outC上的事件处理函数,而是触发了outA上的事件处理函数。原因不做解释,如果你还不明白,可以再读一遍本文章。 

 


视觉语言模型对抗攻击与防御:从传统方法到多模态挑战 本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。 阅读详情

相关推荐

基于gm/id方法的折叠式共源共栅放大器设计实践

本文详细介绍了基于gm/id设计方法进行折叠式共源共栅放大器设计的完整流程。该方法通过确定晶体管的跨导效率(gm/id)作为核心设计参数,将复杂的放大器设计转化为有明确路径的优化问题。文章以设计一个增益80dB、带宽1GHz的两级放大器为例,逐步拆解了从指标分解、关键晶体管工作点选取、到实战仿真与微调的全过程,特别强调了第二级设计对稳定性的影响以及相位裕度的调试技巧。

w8x9y0z1的博客 415

看懂此文,不再困惑于javascript中的事件绑定、事件冒泡、事件捕获和事件执行顺序

抽空学习了下,javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享。到这里是不是可以理解addEventListener(type,handler,useCapture)这个API中第三个参数useCapture的含义呢?useCapture=false意味着:将事件处理函数加入到冒泡阶段,在冒泡阶段会被调用;useCapture=true意味着:将事件处理函数加入到捕获阶段,在捕获阶段会被调用至此我们可以给出事件函数执行顺序的结论了:捕获阶段的处理函数最先执行,其次是目标阶段的处理

aty 1万+

Gradle进阶:4:结合Sonarqube进行代码审查

作为代码质量检查的流行工具,比如Sonarqube能够检查代码的“七宗罪”,跟代码结合起来能够更好地提高代码的质量,这篇文章将会介绍如何结合gradle和sonarqube对代码质量与测试覆盖率进行分析。

知行合一 止于至善 1万+

事件冒泡、捕获?如何阻止

事件冒泡 <style> div{ color: white; font-size: 30px; } .content{ width: 400px; height: 400px; background-color...

qq_38888512的博客 3653

Autodesk激活无无网络选项?许可类型与脱机激活排查修复指南

软件许可激活是保障正版授权正常使用的核心环节,常见的授权模式包括单机版许可和网络版许可,两者在认证机制和应用场景上有所区别。单机版离线授权依托 FlexNet Licensing Service 等底层服务组件,在断网或内网环境下为用户提供可靠的技术支持与授权验证路径。然而在实际部署中,激活窗口并不总是显示“无网络激活方式”入口,这可能与许可类型选择、网络环境干扰、组件安装残留或系统时间偏差有关。理解入口的动态呈现逻辑与排查顺序,有助于在 AutoCAD、Revit 等 Autodesk 产品中高效解决脱机

weixin_28709649的博客 356

使用Kolla部署多节点Rocky版本OpenStack

openstack命令行客户端使用,post-deploy会在 /etc/kolla/目录下生成文件admin-openrc.sh。每次使用openstack命令时执行source /etc/kolla/admin-openrc.sh(manager节点执行)source /etc/kolla/admin-openrc.sh (将文件内容复制到/etc/profile中,即可一直生效)3.2.2 开始安装kolla-ansible,要带上--ignore-installed PyYAML,否则可能会报错。

gyc1206的博客 1927

js中的事件冒泡与事件捕获

js中的事件冒泡与事件捕获。当点击黑色容器时,开始进行事件捕获,Js事件流从window上往事件触发处传播,遇到注册的捕获事件就会触发;但是捕获阶段默认是不处理的(addEventListener第三个参数默认是false),紧接着传播到事件触发处,触发注册的事件,打印div3,然后进行冒泡阶段从事件触发处 往window上传播,遇到注册的冒泡事件会触发,打印div2,再打印div1。就是因为点击了盒子的子元素(黄色和红色部分),事件冒泡到了绑定拖拽事件的父元素身上(蓝色部分),导致触发的是拖拽效果。

~~~ 3909

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 651

阻止事件冒泡和事件捕获的方法及vue事件修饰符的使用

通过使用event.stopPropagation()方法,可以阻止事件传播(事件冒泡和事件捕获),通过event.preventDefault()方法,可以阻止事件的默认行为。

SSophia的博客 3410

Python进阶005:修改Jupyter Notebook的工作路径

1、Jupyter Notebook简介 2、修改Jupyter Notebook的工作路径 如下三个步骤: 一、安装notebook 在CMD命令行中输入: pip install notebook 二、启动notebook jupyter notebook 启动后发现是在你的用户目录下,如下图所示,但是该目录下有很多的其他文件或文件夹,因此我想把这个环境切换到我单门创建的一个文件夹中。 三、创建notebook的配置文件 在CMD命令行中执行: jupyter notebook --genera

若北辰 1386

人工智能混合编程实践:C++调用封装好的DLL进行异常检测推理

C++、Python、ONNX、人工智能、异常检测、Anomalib 2.1.0

FriendshipTang的博客 170

阻止事件冒泡\事件捕获 [无废话版]

(一) 前言 1.1 Dom 事件流 捕获阶段 处于目标阶段 冒泡阶段 DOM事件流中,实际的目标在捕获阶段不会接收到事件,下一个阶段是处于目标阶段,这时事件被触发,最后进入事件冒泡阶段。我们认为处于目标阶段是事件冒泡阶段的一部分。 1.2 监听事件如何切换冒泡与捕获 改变 addEventListener 的第三个参数:接收布偶值,默认为 false true 为采用事件捕获 document.getElementById("third").addEventListener("click",fu

weixin_46235143的博客 2165

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 759

js中的事件绑定、事件冒泡、事件捕获和事件执行顺序(详细解读)

抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享。 (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定、在js代码中绑定。下面的方式1、方式2属于在html中绑定事件,方式3、方式4和方式5属于在js代码中绑定事件,其中方法5是最推荐的做法。 方式1: HTML的DOM元素支持onclick、onb...

前端-阿来 2876

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JS 中的事件设计

javascript事件相关

PT - Blog 320

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

DOM事件

href=”javascript:void(0);”这个的含义是,让超链接去执行一个js函数,而不是去跳转到一个地址,而void(0)表示一个空的方法,也就是不执行js函数。 <a href="javascript:void(0)">点击</a>点击链接后不会回到网页顶部<a href="#">点击</a> 点击后会回到网面顶部 "#"其实是包...

weixin_30322405的博客 154

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

javascript中的事件模型

一.事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性,常见的有加载事件,鼠标事件,自定义事件等 用于DOM是一个树结构,如果在父子节点绑定事件的时候,当触发子节点的时候,就存在一个顺序问题,这就涉及到事件流的概念 事件流都会经历三个阶段: 事件捕获阶段(capture phase) 处于目标阶段(target phase) 事件冒泡阶段(bubbing phase) ...

m0_50570745的博客 1998

js之事件绑定,事件委托,dom流事件总结

Js中的事件: Onsubmit:用于表单提交之前,验证所有表单。 Onload和onunload用户进入或离开时触发,可用于处理cookie Onload主要用于Body标签:页面一加载就触发 Onmouseenter ,onmouseover,onmouseleave等为鼠标事件 表单事件:表单元素事件,在表单元素中才有效 onchange 框内容改变时 onsubmit 点击提交按钮时 onreset 重...

qq_40556950的博客 296

介绍事件“捕获”和“冒泡”执行顺序和事件的执行次数

介绍事件“捕获”和“冒泡”执行顺序和事件的执行次数

php_martin的博客 1089

js的事件处理机制

目录 前言 DOM事件流 事件捕获(Event Capturing) 事件冒泡(Event Bubbling) 事件监听 ( EventTarget.addEventListener() ) 前言 javascript是事件驱动型语言。当用户在网页中进行某种操作时,就产生了一个“事件”(Event)。 事件几乎可以是任何事情:单击一个网页元素、拖动鼠标等均可视为事件。JavaScript是事件驱动的,当事件发生时,它可以对之做出响应。具体如何响应某个事件由编写的事件处理函数完成。 JavaS

csdssdn的博客 2602

js的dom事件流、事件委托和阻止绑定事件触发

主要讲解事件绑定和事件委托,onclick事件和addEventListener的区别

风如也的博客 1028
上一篇: About fullpage.js in Muke
下一篇: 【JavaScript】利用滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
leadn
博客等级 码龄10年 13粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值