jQuery hashbang 无法识别的表达式

jQuery unrecognized expression with hashbang

我有一些点击加载的片段。我还将页面滚动到这些链接的顶部,如在 css-tricks 上找到的那样。我收到以下错误:未捕获错误:语法错误,无法识别的表达式:#!Fragment_Name

我的js

$(function() {
    $('a[href*=#]:not([href=#])').click(function() {
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
        var target = $(this.hash);//this is where the error is
        target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
        if (target.length) {
            $('html,body').animate({
            scrollTop: target.offset().top
        }, 1000);
        return false;
        }
    }
    });
});

HTML

<li><a href="#!Fragment_Name">Link Text</a></li>

我试过 var target = $($(this.hash));不开心

一切仍然有效,我只是想知道如何解决这个问题并从控制台中删除错误。

这是因为您的 JQuery 选择器中有一个特殊字符。去除那个 !来自你的 href,它会没事的。

您可以简单地使用 .replace 来转义 ! :

$(this.hash.replace( /([!])/g, "\" ))