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

use*_*950 2 firefox jquery

我正在使用 jQuery 平滑滚动到我网站上的某些锚点。锚点是以编程方式创建的,以便它们可以包含一些德语变音符号,例如 \xc2\xbb\xc3\xbc、\xc3\xa4、\xc3\xb6\xc2\xab 或其他 unicode 字符,例如 \xc2\xbb\xc3\x9f、 \xc3\xa8\xc2\xab 等.\n该函数使用散列来选择散列所引用的元素:

\n\n
// Smooth scroll to anchor position.\nfunction smoothScroll (hash) {\n\n  var scrollTo = typeof $(hash).offset().top != undefined ? $(hash).offset().top: 0;\n\n  $(\'html, body\').animate({\n    scrollTop: scrollTo\n\n  }, 800);\n}\n\n// Test smooth scroll.\nsmoothScroll ("#Akademie-f\xc3\xbcr-Gestaltung");\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
Error: Syntax error, unrecognized expression: #Akademie-f%C3%BCr-Gestaltung...\n
Run Code Online (Sandbox Code Playgroud)\n\n

这引出了我的问题。我如何知道 jQuery 选择器中允许使用哪些字符?jQuery 文档仅提到以下字符!"#$%&\'()*+,./:;<=>?@[\\]^{|}~

\n\n

我该如何转义其他字符,以确保选择器能够在所有现代浏览器中工作?

\n

T.J*_*der 6

\n

我如何知道 jQuery 选择器中允许使用哪些字符?

\n
\n\n

它们是 CSS 选择器。所有细节都在选择器规范中。选择器中使用的文字 ID 和类名的规则位于此处。转义可以让您使用字面上无法使用的字符(但这很痛苦,所以最好避免)。例如,虽然您可以使用\xc3\xbc,但这样做很痛苦,因为你不能从字面上使用它,你必须逃避它。

\n\n

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

\n