javascript - jQuery - 在锚点中转义特殊字符
问题描述
我在平滑滚动功能方面遇到了一些问题。锚点中有特殊字符(åäö),但在获取$(this.hash)
它们时会被编码,从而给我一个Syntax error, unrecognized expression: #sp%C3%A5r1
(锚点链接到#spår1)。
如何防止编码使它们链接到正确的 ID?我试图解码URI但无济于事,因为jQuery在之前的语句中抛出了错误(var target = $(this.hash)
)
这是代码:
$('a[href*=\\#]:not([href=\\#])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') ||
location.hostname == this.hostname) {
var navHeight = 0;
if (document.querySelector('#nav')) {
navHeight = document.querySelector('#nav').offsetHeight;
}
//GET HASH FROM ANCHOR
var target = $(this.hash);
target = decodeURI(target);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - navHeight
}, 100);
return false;
}
}
});
解决方案
推荐阅读
- haskell - 我对可还原表达式的理解是否正确?
- javascript - 将画布转换为 img 并仅打印图像
- android - 单击Android Studio时如何从项目列表视图中获取值?
- java - KeyEvent发生时代码的执行顺序
- php - Laravel - 生命周期结束
- angular - Angular 6:使用提取的 API 中的 Json 显示图像时出错
- javascript - JavaScript 不读取动态值 {{*}}
- robolectric - 任何方式我都可以模拟/隐藏 MediaStore 以进行 Android 仪器测试
- python - 在 Python 中将列从对象转换为浮点数时出错
- sql - SQL : 选择 Quandl Wiki 数据集中 2012-2017 年数据完整的三个股票代码