【问题标题】:Syntax error, unrecognized expression: /blog语法错误,无法识别的表达式:/blog
【发布时间】: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: "要使用任何元字符(例如!"#$%&amp;'()*+,./:;&lt;=&gt;?@[\]^``{|}~)作为名称的文字部分,必须使用两个反斜杠对其进行转义:\\。例如,带有id="foo.bar"的元素,可以使用选择器$("#foo\\.bar")"

标签: javascript jquery html


【解决方案1】:

尝试改用'.menu li a, .scroll-btn a[href^="#"]'

我认为 jQuery 试图将 /blog 视为正则表达式。所以会出现这个错误。

【讨论】:

    【解决方案2】:

    这可能是选择器try的转义问题:

    $(".menu li a[href^='#'], .scroll-btn a[href^='#'], .menu li a[href='\\/blog']").on("click", function(e) {
    

    显示正在处理这个小提琴: https://jsfiddle.net/aLenr3fp/2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多