在以下javascript代码示例中:
var myButton = $('#myButton');
myButton.click(function (event) {
/* stuff... */
event.preventDefault();
});
默认的优点和缺点是什么?在功能的开头或结尾阻止操作? - 假设无条件想要最终阻止它的情况。是否有任何技术理由选择单向?
上网时我发现只有one reference -dead博客,对不起谷歌缓存链接 - 并且在开头阻止默认操作的点将避免在js功能崩溃的情况下发生的操作。
注意:我在我的例子中使用jQuery只是为了熟悉,问题不是关于jQuery,经典事件处理模式的答案是相同的。
答案 0 :(得分:11)
由于你说的原因,我把我的防范代码放在了开头。如果函数中较早的js中存在错误,则已经阻止了默认操作。这可能是生产中需要的行为,但也可以帮助调试开发代码,请考虑:
$('a').on('click', function(e) {
console.log('some debugging information here');
// Other stuff
e.preventDefault();
});
如果发生错误,页面可以刷新或跟随锚点的href,然后才能读取调试信息。将操作切换到顶部将确保您可以在控制台中读取输出。
编辑正如Axel在评论中指出的那样,另一个优点是你立刻意识到代码正在替换默认操作而不是补充它。
答案 1 :(得分:3)
最终调用放置preventDefault()
的位置完全取决于开发人员的选择。虽然在大多数情况下已经指出了更好的选择,但是将它置于代码的最顶层以避免不可预测的行为,如下所示:
$('#one').click(function(ev){
//ev.preventDefault(); // for 90% this is better choice, consider example below
alert('no hey!');
return; // this is very simple example, in more complex code sometimes it could not be such obvious
ev.preventDefault(); // sometimes though it may be required to keep default action depending on some cases
})
但不得不承认,你可能会发生根据某些事情保持默认操作的情况,因为我的观点是这种情况很少见,但是你可能会将防止默认设置在底部并使用带有if条件的返回。
答案 2 :(得分:0)
您没有任何区别,消息队列被困在您的函数中。