PreventDefault 对我来说不起作用
2012-11-13
315
我对preventDefault()感到困惑。
我得到了下面的测试
$('.next').click(function(e){
if(e.preventDefault){
console.log("asdfnext");
e.preventDefault();
}else{
console.log("next");
return false;
}
});
这是工作文件的一部分。
<a class='next' href='http://www.bbc.co.uk'>Next</a>
<a class='previous' href='http://www.facebook.com'>previous</a>
根据上述内容,我可以阻止我的链接转到bbc或facebook。 你可以在这里查看 http://jsfiddle.net/puQ7H/
但是当我尝试按照如下方式实现它时,我失败了,我真的很想知道为什么
$('#step0Next').click(function(e){
if($(this).is('.disabled')){
console.log("disabled");
if(e.preventDefault){
console.log("asdfnext");
e.preventDefault();
return false;
}else{
console.log("next");
return false;
}
}else{
console.log("not disabled");
}
});
基本上==> step0Next 是我的链接 id
我的 css 如下:
a.disabled { opacity:0.2; cursor: default; }
我的想法是,如果链接处于 ('.disable') 状态, 则停止进入下一步。
实际上链接进入下一步,我在这里停止。:P
3个回答
您正在使用 if 块检查
.preventDefault
是否存在,为什么?试试这个:
$('#step0Next').click(function(e){
if($(this).hasClass('disabled')){
console.log("disabled");
e.preventDefault();
} else {
console.log("not disabled");
}
});
实际上
.hasClass()
速度更快一些,因为它不通过选择器引擎运行。
samy-delux
2012-11-13
尝试使用 event.isDefaultPrevented()
if(e.isDefaultPrevented()){
}
Description: Returns whether event.preventDefault() was ever called on this event object.
wirey00
2012-11-13
您不需要
return false;
,而且我并不认为该检查是相关的。请尝试使用以下方法:
$('#step0Next').click(function(e){
if($(this).is('.disabled')){
console.log("asdfnext");
e.preventDefault();
}else{
console.log("not disabled");
}
});
Andrei R
2012-11-13