Javascript-停止在某些链接上滚动

Javascript-停止在某些链接上滚动,javascript,scroll,Javascript,Scroll,比如说, <a href="#foo">Foo</a> <a href="#bar">Bar</a> ... <div id="foo"></div> <div id="bar"></div> ... 有没有一种方法可以选择性地停止某些元素的滚动 在上面的示例中,如果单击了带有`href=“#bar”的锚点,我希望浏览器不滚动到#bar元素,该怎么办 这是可能的吗?使用返回false的单击

比如说,

<a href="#foo">Foo</a>
<a href="#bar">Bar</a>

 ...

<div id="foo"></div>
<div id="bar"></div>

...
有没有一种方法可以选择性地停止某些元素的滚动

在上面的示例中,如果单击了带有`href=“#bar”的锚点,我希望浏览器不滚动到#bar元素,该怎么办


这是可能的吗?

使用返回
false的单击处理程序,这会阻止默认的单击操作

<a href="#bar" onclick="return false;">Bar</a>

是的,您正在寻找的是如何防止浏览器默认行为

示例(使用jQuery)


嗯,我建议的一种方法是在某些特定情况下删除href属性。但是删除href属性可能会导致锚点看起来不再可单击

如果您希望您的锚仍然显示为可单击:

'$(“a”).removeAttr(“href”).css(“光标”、“指针”);'


您可以为特定的锚元素指定id。

如果向不希望滚动的链接添加类或id,则可以向这些链接添加事件侦听器,并阻止单击时的默认操作

HTML

<a href="#foo">Foo</a>
<a href="#bar" class="blockedLink">Bar</a>

...

<h2 id="foo">Foo</h2>
<h2 id="bar">Bar</h2>

...
福
酒吧
Javascript

var blockedLinks = document.getElementsByClassName('blockedLink');

for (var i = 0; i < blockedLinks.length; i++) {
    blockedLinks[i].addEventListener('click', function (e) {
        e.preventDefault();
    }, false);
}
var blockedLinks=document.getElementsByClassName('blockedLink');
对于(变量i=0;i

var blockedLinks = document.getElementsByClassName('blockedLink');

for (var i = 0; i < blockedLinks.length; i++) {
    blockedLinks[i].addEventListener('click', function (e) {
        e.preventDefault();
    }, false);
}