我试图使用此答案中说明的方法来创建一个简单的3点菜单,该菜单使用户可以滚动到各个部分。
最终得到以下代码:
的HTML
<body>
<nav id="nav">
<ul>
<li>
<a class="navLink" href="#home">HOME</a>
</li>
<li>
<a class="navLink" href="#info">INFO</a>
</li>
<li>
<a class="navLink" href="#pics">PICS</a>
</li>
</ul>
</nav>
<section id="home">
<!-- stuff -->
</section>
<section id="info">
<!-- stuff -->
</section>
<section id="pics">
<!-- stuff -->
</section>
</body>
JS
$('a.navLink').on('click', function(event) {
event.preventDefault();
var target = $(this.href);
if( target.length ) {
$("html, body").scrollTo(target, { duration: 1000, easing: "linear" });
}
});
单击三个链接中的任何一个,我最终得到:
Uncaught Error: Syntax error, unrecognized expression:
http://localhost/meckerHP/#whatevervalueinhref
甚至尝试通过根本不使用href属性,而是为每个链接使用id来代替,这确实消除了错误消息,但让我留下了无效链接。
我看不到任何原因导致以上链接的答案中的方法不起作用,因此我们非常感谢您的帮助。
您可以通过从以下位置更改以下行来解决此问题:
var target = $(this.href);
到:
var target = $($(this).attr('href'));
最初的代码行的问题在于,this.href
它将返回锚点的完整URL,而不仅仅是href
HTML中的文字值。因此,因此您不能将其用作jQuery选择器。如果您改用$($(this).attr('href'));
,则基本上可以估算$("#theHref");
出您所期望的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句