jQuery选择器中允许哪些字符?

时间:2017-01-16 12:43:27

标签: jquery firefox

我正在使用jQuery来平滑滚动到我网站上的一些锚点。锚点是以编程方式创建的,因此它们可以包含一些德语变音符号,如»ü,ä,ö«或其他unicode字符,如»ß,è«等。 该函数使用哈希来选择哈希引用的元素:

// Smooth scroll to anchor position.
function smoothScroll (hash) {

  var scrollTo = typeof $(hash).offset().top != undefined ? $(hash).offset().top: 0;

  $('html, body').animate({
    scrollTop: scrollTo

  }, 800);
}

// Test smooth scroll.
smoothScroll ("#Akademie-für-Gestaltung");

这适用于Chrome和Safari,但不适用于Firefox。它会产生以下错误:

Error: Syntax error, unrecognized expression: #Akademie-f%C3%BCr-Gestaltung...

这让我想到了我的问题。我怎么知道jQuery选择器中允许哪些字符? jQuery documentation仅提及以下字符!"#$%&'()*+,./:;<=>?@[\]^{|}~

我如何逃避其他角色,以确保选择器可以在所有现代浏览器中使用?

1 个答案:

答案 0 :(得分:3)

  

我怎么知道jQuery选择器中允许哪些字符?

他们是CSS选择器。所有细节都在the selectors specification。选择器中使用的文字ID和类名的规则是here。逃避让你使用字面上无法使用的字符(但这是一种痛苦,最好避免)。例如,虽然你可以使用ü,但这样做很痛苦,因为你无法按字面意思使用它,你必须逃避它。

但ID选择器只是一种特殊的(非常快)的选择器。您可以在引号中使用attribute selector,这意味着您可以避免转义:$('[id="Akademie-f%C3%BCr-Gestaltung"]')这完全有效且正确。