我可以使用jQuery将e.preventDefault()写入我的代码中的所有链接吗?

时间:2011-12-05 16:14:02

标签: javascript jquery html

我很想知道:

我的html文件中有一些链接,其中大多数都需要在他们的点击功能中写入,不要跳到页面顶部(e.preventDefault()会这样做)我需要写一下这个动作除了他们实际执行的功能之外。

我能写出类似的东西:

$('a').click(function(){e.preventDefault()})

会起作用吗?或者如果我写的话会与实际函数产生冲突:

$('a').click(function(){e.preventDefault()});
$('a#goingToDoSomething').click(function(){console.log('just did it')})

我问,因为我想让我的代码更好 - 但不确定这是不是...... 谢谢, 阿龙

3 个答案:

答案 0 :(得分:6)

是的,如果您将normalised event object传递给回调函数,它将起作用:

$('a').click(function (e) {
    e.preventDefault();
});

不,不会有任何冲突(冲突?嗯?)。您可以将额外的点击处理程序绑定到您的链接,它们将按预期工作。

答案 1 :(得分:2)

其他答案是正确的,但效率不高:

$('body').on('click', 'a', function(e){
    e.preventDefault();
});

修改

$(document).on

会更快,但未经过测试,应该可以正常工作

需要jQuery 1.7 +

答案 2 :(得分:1)

如果将事件对象传递给单击处理程序,它应该可以正常工作。试试这个

$('a').click(function(e){e.preventDefault()})