首页 > 解决方案 > 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;
    }
  }

});

标签: javascriptjqueryhashscrolldecode

解决方案


推荐阅读