[英]Removing preventDefault and stopPropagation in javascript
嗨,我需要在用户单击某个元素时阻止默认操作,并仅在该时间阻止其默认操作,并且需要执行一些其他操作。 我用过的
document.body.onclick = function (e) {
e.preventDefault();
e.stopPropagation();
}
但现在的问题是,在执行上述操作后,我需要删除preventDefault
和stopPropagation
,因为在此之后没有任何链接(a href)被触发。 那么如何在执行后撤消呢? 请注意,它是纯 JavaScript 代码,我没有使用任何像 jquery 这样的库。 所以我不能使用.bind
和.unbind
。 对此的任何想法将不胜感激。
您可以使用addEventListener
和removeEventListener
复制bind
和unbind
的行为
function stopIt(e) {
e.preventDefault();
e.stopPropagation();
}
document.body.addEventListener("click", stopIt);
// then later
document.body.removeEventListener("click", stopIt);
注意:IE <= 8 不支持addEventListener
和removeEventListener
,因此您需要使用此处提到的attachEvent
- https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener#兼容性
不要将事件绑定到正文,将事件绑定到需要防止的元素:
document.getElementById('theTarget').onclick = function(e) {
// ...
}
如果我正确理解您的要求,恐怕您无法撤消e.preventDefault();
. 但默认情况下,处理函数将在执行默认操作之前执行。 所以在你的情况下,你不需要e.preventDefault();
一点也不。 并记住仅将事件侦听器附加到<a>
标记
var aTags = document.getElementsByTagName("a");
for (var i=0;i<aTags.length;i++){
aTags[i].onclick = function (e) {
// just perform your action here, don't need e.preventDefault();
}
}
这是中断或回滚 stopImmediatePropagation() 的工作解决方案:
解绑
$("#mydiv").unbind();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.