【发布时间】:2017-11-09 19:39:59
【问题描述】:
我正在向现有的单页站点添加博客部分,但在使用 jQuery 时遇到了一些问题。新博客将托管在新的 /blog 目录中,因此新菜单项与其他单页 index.html 中的所有其他 href="#" 标记不同:
<!-- Menu -->
<ul class="menu">
<li><a href="#about">About</a></li>
<li><a href="#skills">Skills</a></li>
<li><a href="#portfolio">Works</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
我尝试了各种不同的选择器来让一切正常运行,但似乎没有任何效果。我给博客href 提供了一个唯一ID,并尝试使用#wp-blog 选择它,我尝试使用.menu li a[href^='/'] 选择它,甚至使用.menu li a[href='{url}'] 选择它,但我没有看到任何结果。另外,我尝试交换双引号和单引号,但这也不起作用。我相信代码以外部单引号开头,href 标签中使用了双引号,但无论哪种方式都不起作用。这是上下文中的 JS:
$(document).on("scroll", onScroll);
$(".menu li a[href^='#'], .scroll-btn a[href^='#'], .menu li a[href='/blog']").on("click", function(e) {
e.preventDefault();
$(document).off("scroll");
$("a").each(function () {
$(this).removeClass("active");
});
尽管进行了几个小时的研究并为此花费了将近一整天的时间,但每次滚动时,我的控制台都会抛出此错误:
jquery-3.2.1.min.js:formatted:572 Uncaught Error: Syntax error, unrecognized expression: /blog
at Function.ga.error (jquery-3.2.1.min.js:formatted:572)
at ga.tokenize (jquery-3.2.1.min.js:formatted:896)
at ga.select (jquery-3.2.1.min.js:formatted:1073)
at Function.ga (jquery-3.2.1.min.js:formatted:311)
at Function.a.find (jquery-migrate-1.4.1.min.js:5)
at r.fn.init.find (jquery-3.2.1.min.js:formatted:1194)
at r.fn.init.a.fn.find (jquery-migrate-1.4.1.min.js:5)
at a.fn.init.r.fn.init (jquery-3.2.1.min.js:formatted:1215)
at new a.fn.init (jquery-migrate-1.4.1.min.js:5)
at r (jquery-3.2.1.min.js:formatted:33)
我已经查看了有关 jQuery 选择器的其他问题:Select <a> which href ends with some string
关于 href 选择器的 jquery 语法错误问题在这里:Syntax error, unrecognized expression for href
还有这里:https://github.com/jquery/jquery/issues/2824
这里还有多个选择器的问题:Multiple selector chaining in jQuery?
非常感谢任何建议!谢谢。
【问题讨论】:
-
你能用
".menu li a, .scroll-btn a[href^='#']"代替吗?感觉有些东西正试图将 /blog 视为正则表达式。 -
onScroll函数是什么? -
jQuery Selectors: "要使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^``{|}~)作为名称的文字部分,必须使用两个反斜杠对其进行转义:\\。例如,带有id="foo.bar"的元素,可以使用选择器$("#foo\\.bar")"
标签: javascript jquery html