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, "\" ))
我有一些点击加载的片段。我还将页面滚动到这些链接的顶部,如在 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, "\" ))