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);
}