2011-12-01 70 views
1

我有一个链接jQuery和#链接

<a href="#">has a jQuery click handler</a> 

我的jQuery的工作它应该的方式......但散列#标签是使我的浏览器跳转到页面上每次点击的顶部。

有什么办法可以解决这个问题吗?我尝试删除#但它改变了我的CSS样式。

+2

只是一个fyi,这不是一个jQuery问题。 – Marc

回答

6

如果您想快速且肮脏地解决问题,您应该在您的点击处理程序的末尾添加一个return false;

但是,返回false将强制您退出并实际停止事件传播。由于您使用的是jquery javascript库,因此您也可以选择使用preventDefault()方法,该方法将删除默认操作并允许该函数继续运行。

5

您的点击处理程序应为return false;或致电preventDefault()事件对象。

实施例:

$('your selector').click(function(e) /* note the parameter e */ 
{ 
    e.preventDefault(); 
    //your code 
}); 
0

return false或拨打eventHandler.preventDefault()onclick事件:

$('#yourLink').click(function() { 
    return false; 
}); 

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

或改变href到:

<a href="javascript:void(0);">has a jQuery click handler</a> 
1

您还可以使用javascript: void false;而不是#。所以:

<a href="javascript: void false;">has a jQuery click handler</a> 
1

要重申上面的评论,这是正确的,添加一个返回false到点击处理程序。这看起来像:

$('.link').click(function(){ 
    ... things to run on click ... 
    return false; 
});