Javascript防止默认操作

标签 javascript html jquery dom-events

我刚刚练习一些 JavaScript,遇到了一个无法解决的错误。我的 html 中有一个列表,其中每个项目都链接到一个页面,但是 我的 js 脚本中有一个函数,当我单击该项目时,它应该从列表中删除该项目,我尝试使用 preventDefault() 但它仍然将我带到该链接。

<ul id="shoppingList">
        <li class="complete"><a href="google.com><em>fresh</em>tuna</a></li>
        <li class="complete"><a href="google.com">meatball</a></li>
        <li class="complete"><a href="google.com">kiwi</a></li>
        <li class="complete"><a href="google.com">chicken soup</a></li>
    </ul> 

function getTarget(e){
if(!e){
    e = window.event;
} 
return e.target || e.srcElement;}

function itemDone(e){
//Remove item from the list
var target;
var Parent;
var Grandparent;
target = getTarget(e);
Parent = target.parentNode;
Grandparent = target.parentNode.parentNode;
Grandparent.removeChild(Parent);

//Prevent the link from taking you somewhere
if(e.preventDefault){
    e.preventDefault();
}else{
    e.returnValue = false;
}
}

//Set up event listeners to call ItemDone() on click
var Shoppo = document.getElementById('shoppingList');
if(Shoppo.addEventListener){
Shoppo.addEventListener('click',function(e){
    itemDone(e);
},flase);
}else{
Shoppo.attachEvent('onClick',function(e){
    itemDone(e);
});
}

最佳答案

要检查是否调用了 e.preventDefault(),您可以使用 isDefaultPrevented 返回 true 或 false。所以你可以像这样改变你的代码,

e.preventDefault();
if(e.isDefaultPrevented()){
    // default event is prevented
}else{
    e.returnValue = false;
}

关于Javascript防止默认操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686936/

相关文章:

"type"或 "rel"的 Javascript onload 回调,脚本或链接标记上的 'text/plain'

javascript - 无框模态弹出

javascript - 如何在页面刷新时保持链接状态

html - Bootstrap 中是否有像 btn-block 这样的输入 block 样式?

c# - string.format 中的系统格式异常

javascript - react 组件中的 jQuery

javascript - 如何让代码更短?

javascript - 水平对齐 HubSpot 表单

javascript - 有没有办法让屏幕阅读器在渲染元素时只宣布一次?

javascript - 使用脚本在另一个div中显示子菜单