当我有一个链接连接到jQuery或JavaScript事件时,比如:
<a href="#">My Link</a>
如何防止页面滚动到顶部?当我从锚中删除href属性时,页面不会滚动到顶部,但链接似乎不可点击.
当我有一个链接连接到jQuery或JavaScript事件时,比如:
<a href="#">My Link</a>
如何防止页面滚动到顶部?当我从锚中删除href属性时,页面不会滚动到顶部,但链接似乎不可点击.
您需要防止发生单击事件的默认操作(即导航到链接目标).
有两种方法可以做到这一点.
event.preventDefault()
调用传递给处理程序的事件对象的.preventDefault()
方法.如果使用jQuery绑定处理程序,则该事件将是jQuery.Event
的实例,并且将是.preventDefault()
的jQuery版本.如果您使用addEventListener
来绑定处理程序,那么它将是Event
和.preventDefault()
的原始DOM版本.无论哪种方式都可以做你需要的事情.
示例:
$('#ma_link').click(function($e) {
$e.preventDefault();
doSomething();
});
document.getElementById('#ma_link').addEventListener('click', function (e) {
e.preventDefault();
doSomething();
})
return false;
从事件处理程序返回False将自动调用event.stopPropagation()和event.prevenentDefault()
因此,对于jQuery,您可以 Select 使用此方法来防止默认链接行为:
$('#ma_link').click(function(e) {
doSomething();
return false;
});
如果您使用的是原始DOM事件,这也适用于现代浏览器,因为HTML5规范规定了这种行为.但是,该规范的旧版本没有这样做,所以如果您需要最大限度地兼容旧浏览器,您应该显式调用.preventDefault()
.有关等级库详细信息,请参见event.preventDefault() vs. return false (no jQuery).