我正在使用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仅提及以下字符!"#$%&'()*+,./:;<=>?@[\]^{|}~
我如何逃避其他角色,以确保选择器可以在所有现代浏览器中使用?
答案 0 :(得分:3)
我怎么知道jQuery选择器中允许哪些字符?
他们是CSS选择器。所有细节都在the selectors specification。选择器中使用的文字ID和类名的规则是here。逃避让你使用字面上无法使用的字符(但这是一种痛苦,最好避免)。例如,虽然你可以使用ü
,但这样做很痛苦,因为你无法按字面意思使用它,你必须逃避它。
但ID选择器只是一种特殊的(非常快)的选择器。您可以在引号中使用attribute selector,这意味着您可以避免转义:$('[id="Akademie-f%C3%BCr-Gestaltung"]')
这完全有效且正确。