JS事件流其中一种是冒泡事件,当一个元素被触发一个事件时,该目标元素的事件会优先被执行,然后向外传播到每个祖先元素,恰如水里的一个泡泡似的,从产生就一直往上浮,到在水平面时,它才消失。在这个过程中,如果你只希望事件发生在目标元素,而不想它传播到祖先元素上去,那么你需要在“泡泡”离开对象之前刺破它。
我在文档中写了一个层,<div id="need_hide">点击以外隐藏该层</div>,并为之设置了简单的样式,现在我希望点击该层以外的地方使之隐藏,那么我给根元素绑定了一个click事件,一点击html就隐藏该DIV,代码如下:
document.documentElement.onclick = function() {
document.getElementById('need_hide').style.display = 'none';
}
但是点击该层后,也使之隐藏了,这不是我希望得到的效果。由于该层属于根元素的子节点,所以它也被绑定了这个click事件,那么需在该元素被click时阻止冒泡事件的发生,加上以下代码:
function stopPropagation(e) {
e = e || window.event;
if(e.stopPropagation) { //W3C阻止冒泡方法
e.stopPropagation();
} else {
e.cancelBubble = true; //IE阻止冒泡方法
}
}
document.getElementById('need_hide').onclick = function(e) {
stopPropagation(e);
}
如果还想增加一个链接:<a href="#" id="btn_show">显示层</a>,用它来控制该层显示出来,那么仍然需要在该链接被点击时阻止冒泡事件的发生,加上以下代码:
document.getElementById('btn_show').onclick = function(e) {
document.getElementById('need_hide').style.display = 'block';
stopPropagation(e);
}
分享到:
相关推荐
js阻止冒泡 $(document).click(function(){ $(".scxl").children('ul').hide(); })
`index.html`通常是网页的结构,而`min.js`可能包含了压缩过的JavaScript代码,用于演示阻止事件冒泡的实现。通过查看这两个文件,我们可以更深入地理解阻止事件冒泡的实践应用。 总结一下,阻止事件冒泡是...
js阻止冒泡事件的方法有2种。 事件冒泡:当一个元素上的事件被触发时,同样的事件会在那个元素的所有祖先元素中被触发。 这个事件是从原始元素开始一直冒泡到DOM树最上层。 目标元素:任何一个事件的目标元素...
在JavaScript中,我们可以使用`event.stopPropagation()`方法来阻止事件冒泡。当我们在监听的事件处理函数中调用这个方法时,可以确保事件不会继续向上层元素传播。例如,如果我们在一个内部元素上监听`mousewheel`...
// 不仅阻止冒泡,也阻止了事件本身 }); }); <div id="ee">aaaaa <a href="baidu.com">baidu.com</a> ``` 在这个例子中,点击按钮时会触发多个事件处理函数,但通过使用`event.stopPropagation();`和`...
此外,`event.stopPropagation()`方法可以阻止事件继续向上冒泡,而`event.stopImmediatePropagation()`则不仅可以阻止冒泡,还能阻止同一元素上的其他事件处理函数被执行。 总结一下,JavaScript事件冒泡是浏览器...
这是因为tap事件与click事件在浏览器处理上存在差异,click事件的stopPropagation()方法在zepto.js中通常能阻止冒泡,而tap事件则不能直接使用stopPropagation()来达到同样的效果。 为了解决tap事件冒泡的问题,...
综上所述,JavaScript中的阻止冒泡和阻止默认行为是非常重要的技术点,它们在处理复杂的事件监听和避免不必要的事件触发时发挥着重要的作用。理解并掌握这些技术对于提升前端开发的交互体验与代码质量具有重要意义。
js阻止冒泡 在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容。 代码如下: function stopPro(evt){ var e = evt || window.event; //returnValue如果设置了该属性,它的值比事件句柄的返回值...
如果想要阻止事件冒泡,可以在事件处理函数中调用`event.stopPropagation()`方法,这将阻止事件继续向上层元素传播。例如,修改按钮的事件处理程序,添加`event.stopPropagation()`: ```javascript document....
在JavaScript中,我们经常需要阻止默认的浏览器行为和事件冒泡,以便实现自定义的功能。在前端开发中,由于浏览器的兼容性问题,理解和掌握这些技术至关重要。下面将详细介绍如何实现这两种功能。 1. **阻止浏览器...
`event.preventDefault()`方法可以阻止这些默认行为。 以下是一个示例,展示了如何阻止`<a>`标签的默认跳转行为: ```html 百度 ``` ```javascript var samp = document.getElementsByTagName("a")[0]; ...
3. **兼容性函数**:对于那些不支持`event.preventDefault()`的旧版浏览器(主要是IE),可以使用以下函数来阻止冒泡: ```javascript function stopDefault(e) { if (e && e.preventDefault) { e....
代码如下:function stopBubble(e){ if(e&&e.stopPropagation){//非IE e.stopPropagation();...如果要阻止默认事件的触发,即默认的href事件,那么就需要调用如下函数: 代码如下:function stopD
总的来说,理解和掌握事件冒泡、事件捕获以及如何阻止事件冒泡是JavaScript开发中的基本技能,这对于创建响应式和交互式的网页至关重要。在编写JavaScript代码时,合理利用这些机制可以提高用户体验,同时避免潜在的...
在React中,由于其虚拟DOM的事件处理机制,事件冒泡和阻止冒泡的行为与原生JavaScript略有不同。 首先,React通过事件池(Event Pooling)优化性能,它将事件处理器绑定到文档的根节点,而不是每个DOM元素。这意味...