在我的网站上,我使用 jQuery 来挂钩元素的事件,即超链接。由于这些超链接仅在当前页面上执行操作,并且不会引导到任何地方,因此我一直将“#”的 href 属性放在:
<a href="#">My Link</a>
但是在某些浏览器中,这会导致页面从右滚动到顶部,这显然是不受欢迎的行为。我试过使用一个空白的href值,或者不包括一个,但是鼠标在悬停时不会变成手形光标。
我应该在里面放什么?
$('a').click(function (event)
{
event.preventDefault();
//here you can also do all sort of things
});
然后你可以输入href
任何你想要的东西,jQuery 会触发这个preventDefault()
方法,你不会被重定向到那个地方。
那些仅仅为了提供点击事件而存在,但实际上并不链接到其他内容的“锚点”应该是真正的按钮元素,因为它们才是真正的。
它可以这样设计:
<button style="border:none; background:transparent; cursor: pointer;">Click me</button>
当然,点击事件可以附加到按钮上,而无需担心浏览器会跳到顶部,也无需添加无关的 JavaScript,例如 onclick="return false;" 或 event.preventDefault() 。
你真的应该在那里放一个真正的链接。我不想听起来像个书呆子,但这是一个相当糟糕的习惯。JQuery 和 Ajax 应该始终是您实现的最后一件事。如果您的链接无处可去,则说明您做的不对。
我不是在破坏你的蛋蛋,我的意思是出于好意。
为什么使用<a href>
? 我这样解决它:
<span class='a'>fake link</span>
并使用以下样式对其进行样式设置:
.a {text-decoration:underline; cursor:pointer;}
您可以使用 jQuery 轻松访问它:
$(".a").click();
将 return false 添加到单击处理程序的末尾,这可以防止发生尝试重定向页面的浏览器默认处理程序:
$('a').click(function() {
// do stuff
return false;
});
使用 jquery,您可能只想获取带有 '#' 的那些
$('a[href=#]').click(function(){return false;});
如果你使用最新的jquery(1.3.x),页面变化时无需再次绑定:
$('a[href=#]').live('click', function(){return false;});
你应该使用<a href="javascript:void(0)" ></a>
而不是<a href="#" ></a>
想知道为什么之前没有人在这里说过:为了防止<a href="#">
将文档位置滚动到顶部,只需使用即可<a href="#/">
。那只是 HTML,不需要 JQuery。使用event.preventDefault();
实在是太多了!
我知道这很旧,但是哇,有一个简单的解决方案。
完全删除“href”,只需添加一个执行以下操作的类:
.no-href { cursor:pointer: }
就是这样!
我几乎遇到了这个问题,而且非常具有欺骗性。我正在提供一个答案,以防有人在我同样的位置结束。
希望这可以帮助陷入跳跃的人!
相反,您可以简单地使用如下所示的 href:
<a href="javascript:;">My Link</a>
它不会滚动到顶部。
<a href="#nogo">My Link</a>