当我在链接上使用 .preventDefault 时,它仍然会转到该链接 - 这是否可以通过 JS 实现,还是仅使用 jquery 方法?
var avoidlink = getElementsByTagName("a");
avoidlink.addEventListner("click",function(evt){
evt.preventDefault();
},false);
<a href="http://www.google.com">Click here</a>
最佳答案
三个问题:
getElementsByTagName
必须在文档或元素上调用- 您无法直接在
getElementsByTagName
返回的节点列表上添加事件监听器,您必须迭代它包含的元素: - 您在
addEventListener
中有拼写错误
这是一个固定代码:
var avoidlink = document.getElementsByTagName("a");
for (var i=0; i<avoidlink.length; i++) {
avoidlink[i].addEventListener("click",function(evt){
evt.preventDefault();
},false);
}
<小时/>
如果您希望能够将事件监听器附加到节点列表,您可以丰富NodeList.prototype
:
NodeList.prototype.addEventListener = function(){
for (var i=0; i<this.length; i++) {
Element.prototype.addEventListener.apply(this[i] , arguments);
}
}
修改不属于您的对象的原型(prototype)通常会受到反对,但这种更改相当无害且自然。
关于javascript - JS .preventDefault 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875222/