ev.preventDefault();和HREF

时间:2012-06-29 14:49:45

标签: jquery html

在我的上一个问题answered之后,我从未见过preventDefault();功能之前。

那么我现在的问题是,最好的方法是什么?我做了以下代码

<!DOCTYPE html>
<head>
    <script type='text/javascript' src='files/jquery-1.7.2.min.js'></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#abc").click(function(ev) {
            ev.preventDefault();
            alert('hey');
            });
        });
       </script>
</head>
<body>
    <h1>helloasdasdasdsad</h1>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a href="javascript:void();" id="abc">Link 1: javascript:void();</a><BR><BR>
    <a href="#" id="abc">Link 2: #</a><BR><BR>
    <a href="javascipt:void(0);" id="abc">Link 3: javascript:void(0);</a><BR><BR>
    <a id="abc">Link 4: NO HREF</a><BR><BR>
</body>
</html>

..我讨厌使用#,因为它会滚动到页面顶部。结果是javascript:void();在href中将导致IE中的语法错误。将(ev)和ev.preventDefault();行放在每个函数中的答案是什么?或者我可以在每个函数的末尾return false;吗?

什么是最广泛,最广泛接受的做法?

编辑: 好的,所以event.preventDefault();是最好用的,但如果我想要一个冗余链接,那仍然无法回答HREF中的内容?我认为最佳做法是始终使用.click <a href="">事件,因为一些旧浏览器不响应点击事件或悬停在DIV / SPAN / IMG元素上?

3 个答案:

答案 0 :(得分:1)

请参阅此great post,它应该回答您的问题。此外,你在hrefs中不需要任何东西。

答案 1 :(得分:0)

对于您不希望点击执行任何操作的锚点,请添加preventDefault()

答案 2 :(得分:0)

如果您的链接只有空href="#",那么您可能应该考虑使用<span><div>。这样您根本不需要e.preventDefault()

e.preventDefault()return false都会阻止默认事件行为。 return false还可以阻止事件冒泡DOM。

如果您需要unobtrusive code,则应避免使用href="javascript:void();

同时确保您不会像使用“ABC”

那样在多个地方使用相同的ID