当我有一个链接连接到jQuery或JavaScript事件时,比如:

<a href="#">My Link</a>

如何防止页面滚动到顶部?当我从锚中删除href属性时,页面不会滚动到顶部,但链接似乎不可点击.

推荐答案

您需要防止发生单击事件的默认操作(即导航到链接目标).

有两种方法可以做到这一点.

Option 1: 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();
})

Option 2: return false;

In jQuery:

从事件处理程序返回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).

Html相关问答推荐

如何防止下拉菜单内的Bootstrap列表行包装?

如何删除html原生对话框的宽度

传单自定义标记(divIcon)html/css不适用

CSS:显示块,第一个项目没有正确对齐

如何找到FontAwese图标的Unicode值?

如何使用css为动态用户输入矩阵添加背景色?

标签数据的XPath?

将导航项目底部边框与导航栏对齐

为什么字体大小而不是 colored颜色 属性适用于元素?

如何在小屏幕中制作水平滚动div

如何使单选按钮在被 Select /选中时看起来像这样的设计?

UL 的行为就像它不属于任何类别

:after 伪元素没有出现,即使它有 content 属性

嵌入最近的 YOUTUBE 视频(不是短片,视频)

有没有办法在 Flutter 中创建这个浮动标签表单?

单击时 HTML 锚元素不重定向到相对路径

如何使用 CSS 使粘性元素固定在视口顶部

从右到左支持百分号

鼠标悬停时切换 colored颜色 的双色链接

让 Bootstrap 5 模式和背景占据父容器的宽度和高度,而不是全屏