当我想让某些链接不做任何事情而只响应javascript操作时,避免链接滚动到页面顶部边缘的最好方法是什么?
我知道几种方法,它们似乎都工作得很好:
<a href="javascript:void(0)">Hello</a>
或
<a id="hello" href="#">Hello</a>
<script type="text/javascript>
$(document).ready(function() {
$("#toto").click(function(){
//...
return false;
});
});
</script>
甚至:
<a id="hello" href="#">Hello</a>
<script type="text/javascript>
$(document).ready(function() {
$("#toto").click(function(event){
event.preventDefault();
//...
});
});
</script>
你有什么偏好吗?为什么?在什么情况下?
PS:当然,上面的示例假设您使用的是jquery,但是mootools或prototype也有等价物。
发布于 2010-08-17 08:49:31
我喜欢在链接中使用href="javascript:void(0)"
,因为#
意味着跳转到页面的顶部,如果由于某种原因你的jQuery事件没有加载,例如jQuery加载失败,实际上可能会发生这种情况。
我也使用event.preventDefault();
,因为即使在返回false之前遇到错误,它也不会跟随链接;例如:
HTML:
<a id="link" href="http://www.google.com">Test</a>
jQuery示例1:
$("#link").click(
function(){
alert("Hi");
invalidCode();
return false;
}
);
jQuery示例2:
$("#link").click(
function(event){
event.preventDefault();
alert("Hi");
invalidCode();
return false;
}
);
由于invalidCode();
将抛出一个错误,return false
永远不会到达,如果使用了jQuery示例1,则用户将被重定向至谷歌,而在jQuery示例2中,用户将不会被重定向至谷歌。
https://stackoverflow.com/questions/3498492
复制相似问题