我试图阻止锚链接发送到另一个页面,但它实际上并没有工作,我甚至不知道为什么。我之前使用过preventDefault,它每次都有效,但这次我不知道发生了什么。
是的我已经在stackoverflow上看到了这个问题并尝试了所有方法,但它仍然无效
HTML代码:
<h2><a id="donta" href="/services.html">Eco Ideas</a></h2>
jQuery代码:
$('#donta').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
alert(event.target.tagName); //yes it alerts me 'A'
if(event.isDefaultPrevented()){
alert('Prevented!'); //yes it shows this alert but still send me to that link
event.stopImmediatePropagation();
event.returnValue = false;
}else{
// NOPE, it doesn't show this "ELSE" part...means the below alert doesn't show up...means according to browser or jQuery it is now PREVENTED
alert('Not prevented but trying to prevent now');
event.returnValue = false;
}
return false;
});
你可以看到我尝试了所有的方法,但它仍然把它发送给那个该死的链接! 在此先感谢,因为我知道你们会找到一种方式:)
答案 0 :(得分:1)
链接上有很多事件监听器。其中2人正在监听click
事件。似乎只有一个人阻止了链接,而其他人则没有。
我认为麻烦可能出在这个函数中,因为它会触发:
function end(e) {
clearTimeout(resetTimer);
resetTimer = setTimeout(function() {
w.tapHandling = false;
cancel = false;
}, 1000);
// make sure no modifiers are present. thx http://www.jacklmoore.com/notes/click-events/
if ((e.which && e.which > 1) || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey) {
return;
}
e.preventDefault();
// this part prevents a double callback from touch and mouse on the same tap
// if a scroll happened between touchstart and touchend
if (cancel || w.tapHandling && w.tapHandling !== e.type) {
cancel = false;
return;
}
w.tapHandling = e.type;
trigger(e);
}
答案 1 :(得分:0)
我通常不会将href属性设置为值,只是设置href="javascript:void(0)"
时我不会重定向该链接并在该链接中设置操作。
也许也适合你。