嗨我需要阻止用户点击某个元素时的默认操作,并且仅阻止其默认操作,并且需要执行其他操作。我用过的是
document.body.onclick = function (e) {
e.preventDefault();
e.stopPropagation();
}
但现在的问题是,在执行上述操作后,我需要删除preventDefault
和stopPropagation
,因为在此之后没有任何链接(a href)被触发。那么如何在执行后撤消这个?请注意,它是纯JavaScript代码,我不使用像jquery这样的库。所以我无法使用.bind
和.unbind
。对此有任何想法将不胜感激。
答案 0 :(得分:1)
不要将事件绑定到正文,将事件绑定到您需要阻止的元素:
document.getElementById('theTarget').onclick = function(e) {
// ...
}
答案 1 :(得分:1)
您可以使用bind
和unbind
addEventListener
和removeEventListener
的行为
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#Compatibility
答案 2 :(得分:1)
如果我正确理解您的要求,我担心您无法撤消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();
}
}