使用 jQuery 检测 html 语言

Dan*_*382 4 html multilingual jquery lang

我在 WordPress 中使用多语言插件,使用户能够更改网站上的语言选项。

该插件除其他外还更改了 HTML 语言属性,例如

<html lang="en-GB">
Run Code Online (Sandbox Code Playgroud)

或者

<html lang="en-US">
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下选择器检测语言:

if ($( 'html:lang(en-us)')) {
    alert('US lang detected');
}
Run Code Online (Sandbox Code Playgroud)

然而,这会产生误报,因为即使打开的 HTML 属性设置为“en-GB”,页面下方的其他元素也会设置为“en-us”。

哪个选择器会专门检查开头的 HTML 属性?

Str*_*ner 7

您的选择器是正确的,但您在 if 语句中错误地使用了它。

$( 'html:lang(en-us)')将返回一个 jQuery 对象。jQuery 对象始终为true,因此您的 if 语句将始终计算为 true。

一个简单的修复方法是使用该.is函数,它将返回一个布尔值:

if ($('html').is(':lang(en-us)')) {
    alert('US lang detected');
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*son 5

通过使用 jQuery 来完成这样的任务,您可能会使事情变得不必要的复杂和缓慢:

if ( document.documentElement.lang.toLowerCase() === "en-us" ) {
    alert( "American English." );
}
Run Code Online (Sandbox Code Playgroud)

Vanilla JavaScript 更适合读取属性值等琐碎任务。