jQuery使用hashbang无法识别的表达式

时间:2017-03-08 20:02:28

标签: javascript jquery ajax 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));没有快乐

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

2 个答案:

答案 0 :(得分:1)

您只需使用.replace即可转义!

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

答案 1 :(得分:-1)

这是因为JQuery选择器中有一个特殊字符。除掉 !从你的href,它会没事的。