删除javascript中的preventDefault和stopPropagation
嗨,我需要在用户单击某个元素时阻止默认操作,并且仅在该时间阻止其默认操作,并且需要执行其他一些操作。我用过的删除javascript中的preventDefault和stopPropagation,javascript,Javascript,嗨,我需要在用户单击某个元素时阻止默认操作,并且仅在该时间阻止其默认操作,并且需要执行其他一些操作。我用过的 document.body.onclick = function (e) { e.preventDefault(); e.stopPropagation(); } 但现在的问题是,在执行上述操作后,我需要删除preventDefault和stopPropagation,因为在此之后没有任何链接(a href)被触发。那么,执行后如何撤消此操作?请注意,这是一个纯Java
document.body.onclick = function (e) {
e.preventDefault();
e.stopPropagation();
}
但现在的问题是,在执行上述操作后,我需要删除
preventDefault
和stopPropagation
,因为在此之后没有任何链接(a href)被触发。那么,执行后如何撤消此操作?请注意,这是一个纯JavaScript代码,我没有使用任何类似jquery的库。所以我不能使用.bind
和.unbind
。如果您对此有任何想法,我们将不胜感激。不要将事件绑定到正文,请将事件绑定到您需要阻止的元素:
document.getElementById('theTarget').onclick = function(e) {
// ...
}
您可以使用
addEventListener
和removeEventListener
复制bind
和unbind
的行为
function stopIt(e) {
e.preventDefault();
e.stopPropagation();
}
document.body.addEventListener("click", stopIt);
// then later
document.body.removeEventListener("click", stopIt);
注:IE如果我正确理解您的要求,恐怕您无法撤消
e.preventDefault()代码>。但是默认情况下,处理函数将在执行默认操作之前执行。因此,在您的情况下,您不需要e.preventDefault()代码>完全正确。并记住仅将事件侦听器附加到
标记
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();
}
}
var-aTags=document.getElementsByTagName(“a”);
对于(var i=0;i