在我的上一个问题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元素上?
答案 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