`

阻止事件默认行为的执行和获得触发事件的目标元素【转】

 
阅读更多

我们需要了解浏览器中关于事件对象有两个很重要的功能。阻止浏览器执行事件默认行为的ev.preventDefault(),和可以获得事件目标元素的ev.target.

比如说一个链接被点击了,但因为业务需要,我们并不想让浏览器打开新页面。这时候可以给这个链接加个点击事件监听,然后在回调函数中调用 preventDefault()方法即可。昂,就如下面这个例子,请看HTML:

<a class="prevent" href="http://smashingmagazine.com">Smashing, my dear!</a>
<a class="normal" href="http://smashingmagazine.com">Smashing, my dear!</a>

还有JavaScript:

var normal = document.querySelector('.normal'),
    prevent = document.querySelector('.prevent');

prevent.addEventListener('click', function(ev) {
  alert('fabulous, really!');
  ev.preventDefault();
}, false);

normal.addEventListener('click', function(ev) {
  alert('fabulous, really!');
}, false);

注意: document.querySelector() 是合理获取DOM元素的一种方式。和jQuery的 $() 差不多。 可以读读 W3C’s specification 和MDN的 explanatory code snippets 去了解。

如果点击.prevent链接,会弹出个对话框,点“确定”后啥事都没发生,呵~呵~,因为处理中有执行ev.preventDefault(),所以不会跳到 http://smashingmagazine.com。没有 preventDefault()的就会在弹对话框,且跳链接咯。不信你可以试一下嘛

分享到:
评论

相关推荐

    在每个对象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同。这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。

    标题和描述中提到的知识点主要涉及JavaScript中的事件处理和事件机制。这个事件处理函数的特点是它在每个...了解如何有效地控制事件的执行、阻止默认行为和管理事件冒泡,能够帮助开发者创建更加灵活和可控的前端应用。

    JS传播事件、取消事件默认行为、阻止事件传播详解

    最后,**取消事件的默认行为和阻止事件传播**是控制事件执行的关键。在支持`addEventListener()`的现代浏览器中,可以通过`event.preventDefault()`方法来取消事件的默认操作,而在早期的IE浏览器(IE9之前)中,...

    阻止事件(取消浏览器对事件的默认行为并阻止其传播)

    **结合阻止默认行为和阻止事件传播** 有时候,我们可能只想阻止事件的默认行为而不阻止其传播,或者只阻止事件传播而不改变默认行为。根据需求,我们可以选择性地调用`preventDefault()`和`stopPropagation()`。...

    浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)

    本文将深入探讨两个关键的JavaScript事件处理概念:停止事件冒泡和阻止浏览器的默认行为。这两个特性对于确保页面行为符合预期至关重要,尤其是在处理复杂的交互时。 1. 停止事件冒泡 事件冒泡是事件处理的一个...

    js停止冒泡和阻止浏览器默认行为的简单方法

    然后,我们使用条件语句分别调用合适的停止冒泡和阻止默认行为的方法,以达到跨浏览器的兼容性。 总的来说,理解并正确使用`stopPropagation()`、`preventDefault()`、`cancelBubble`和`returnValue`属性是...

    详解vue事件对象、冒泡、阻止默认行为

    详解 Vue 事件对象、冒泡、阻止默认行为 Vue 事件对象是 Vue 框架中处理事件的核心对象,负责处理用户交互事件,如点击、键盘输入、鼠标移动等。下面对 Vue 事件对象、冒泡、阻止默认行为进行详细介绍。 Vue 事件...

    vue中阻止click事件冒泡,防止触发另一个事件的方法

    - `.prevent`:阻止默认行为,如表单提交。 - `.capture`:在事件冒泡阶段捕获事件,而不是在其冒泡到目标元素时捕获。 - `.self`:只有当事件源是当前元素时才触发处理函数。 - `.once`:事件只触发一次,之后将被...

    移动端事件穿透的原理与解决方案.docx

    例如,可以使用`event.preventDefault()`阻止默认行为,然后通过JavaScript执行`window.location.href`来实现跳转。 2. **延迟元素的隐藏或移除**: - **方法二**:在元素触发touchstart事件后,不是立即隐藏或...

    JS冒泡事件与事件捕获实例详解

    例如,当我们希望在处理某个事件时阻止其他元素上同类型事件的进一步触发,或者需要在事件到达目标元素之前执行一些操作时,就可以利用这两种机制。此外,对于特定场景,如点击事件可能会在不同元素上触发多个函数,...

    javascript防止事件传播

    `event.preventDefault()`不是阻止事件传播,而是阻止事件的默认行为。例如,点击链接默认会跳转到新的URL,但调用此方法可以防止这个跳转。 ```javascript element.addEventListener('click', function(event) { ...

    使用JavaScript事件综合查询,js事件大全

    JavaScript事件是Web开发中不可或缺的一部分,它允许我们与用户进行交互,响应用户的操作。这篇综合查询将深入探讨...在实际开发中,结合事件委托、阻止默认行为和事件捕获等技巧,可以提高代码的可维护性和性能。

    ie事件捕获控件 捕获ie浏览器到打开链接等等的事件

    2. **事件处理函数**:编写处理各种事件的函数,这些函数可以阻止默认行为、修改页面内容或与服务器通信。 3. **事件传播控制**:利用`event.stopPropagation()`或`event.stopImmediatePropagation()`来阻止事件冒泡...

    事件冒泡解决方案

    使用`event.preventDefault()`可以阻止事件的默认行为,但并不会阻止事件的冒泡。在本例中,这可能不是必要的,因为默认行为通常与冒泡无关。 4. **特定事件处理**: 如果你只想让外部div的事件在特定条件下触发...

    javaScript中常用事件

    1. `submit`:表单提交事件,用于阻止默认提交或执行自定义操作。 2. `change`:表单元素值改变时触发,如选择项更改、文本框输入等。 3. `focus`:元素获得焦点时触发。 4. `blur`:元素失去焦点时触发。 五、DOM...

    【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)1

    - 使用`event.stopPropagation()`阻止事件冒泡,`event.preventDefault()`阻止事件的默认行为,以控制事件的传播和行为。 - 检测浏览器特性,通过条件判断来确定使用哪种事件处理方式,如Modernizr这样的库可以...

    javascript事件详解

    - preventDefault():阻止事件的默认行为,例如链接的跳转。 - clientX/clientY:相对于浏览器视口左上角的鼠标坐标。 - pageX/pageY:相对于整个文档的鼠标坐标,不受滚动条影响(IE9以上支持)。 此外,还有...

    javascript事件综合查询

    事件源(event.target)是实际触发事件的元素,而事件当前目标(event.currentTarget)是在事件处理程序上下文中处理事件的元素,可能与事件源不同。 总结,JavaScript事件综合查询涵盖了从基础的事件处理到高级的...

    手动多个click事件防止多触发1

    `是为了阻止默认的链接行为,例如页面跳转。 总的来说,这个例子展示了如何使用`flag`属性来防止多触发点击事件,以及如何在多个元素间共享状态来控制事件处理流程。这种技术在实际开发中非常有用,特别是在需要...

    第09章 事件对象(下)

    事件的传播有三个阶段:捕获阶段(从最外层元素向目标元素)、目标阶段(事件发生在目标元素上)和冒泡阶段(从目标元素向最外层元素)。通过`eventPhase`,我们可以知道事件是在哪个阶段被处理的。 此外,`...

    JavaScript中的所有on事件

    当拖动的元素持续在目标区域上方移动时触发,允许开发者更新拖放效果或阻止默认行为。 #### 21. `ondragstart` 拖拽开始事件,当用户开始拖动元素时触发,可用于初始化拖放操作或设置拖放数据。 #### 22. `ondrop`...

Global site tag (gtag.js) - Google Analytics