使用 jQuery 检测 html 语言
Detect html lang with jQuery
我在 Wordpress 中使用了一个多语言插件,使用户能够在网站上更改他们的语言选项。
这个插件改变了 HTML 语言属性,例如
<html lang="en-GB">
或
<html lang="en-US">
我尝试使用以下选择器检测语言:
if ($( 'html:lang(en-us)')) {
alert('US lang detected');
}
然而,这会产生误报,因为页面下方的其他元素被设置为 'en-us',即使打开 HTML 属性设置为 'en-GB'。
哪个选择器会专门检查开头的 HTML 属性?
你可以把 lang 抓取为 attr,就像代码片段中的代码
console.log($("html").attr("lang"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html lang="en">
<head></head>
<body></body>
</html>
$('html[lang="en-us"]')
应该做。
您的选择器是正确的,但您在 if 语句中使用不正确。
$( 'html:lang(en-us)')
将 return 一个 jQuery 对象。 jQuery 对象 始终 为真,因此您的 if 语句将始终计算为真。
一个简单的修复方法是使用 .is
函数,它将 return 一个布尔值:
if ($('html').is(':lang(en-us)')) {
alert('US lang detected');
}
您必须检查 length
:
if ( $("html:lang(en-us)").length > 0 ) {
alert( 'US lang detected' );
}
通过使用 jQuery 完成这样的任务,您可能会使事情变得不必要地复杂和缓慢:
if ( document.documentElement.lang.toLowerCase() === "en-us" ) {
alert( "American English." );
}
Vanilla JavaScript 更适合读取属性值等琐碎任务
这在 WordPress 中对我有用
jQuery(document).ready(function($){ console.log("cons"); if ( $("html:lang(en)").length > 0 ) {
alert( 'US lang detected' );
} });
我在 Wordpress 中使用了一个多语言插件,使用户能够在网站上更改他们的语言选项。
这个插件改变了 HTML 语言属性,例如
<html lang="en-GB">
或
<html lang="en-US">
我尝试使用以下选择器检测语言:
if ($( 'html:lang(en-us)')) {
alert('US lang detected');
}
然而,这会产生误报,因为页面下方的其他元素被设置为 'en-us',即使打开 HTML 属性设置为 'en-GB'。
哪个选择器会专门检查开头的 HTML 属性?
你可以把 lang 抓取为 attr,就像代码片段中的代码
console.log($("html").attr("lang"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html lang="en">
<head></head>
<body></body>
</html>
$('html[lang="en-us"]')
应该做。
您的选择器是正确的,但您在 if 语句中使用不正确。
$( 'html:lang(en-us)')
将 return 一个 jQuery 对象。 jQuery 对象 始终 为真,因此您的 if 语句将始终计算为真。
一个简单的修复方法是使用 .is
函数,它将 return 一个布尔值:
if ($('html').is(':lang(en-us)')) {
alert('US lang detected');
}
您必须检查 length
:
if ( $("html:lang(en-us)").length > 0 ) {
alert( 'US lang detected' );
}
通过使用 jQuery 完成这样的任务,您可能会使事情变得不必要地复杂和缓慢:
if ( document.documentElement.lang.toLowerCase() === "en-us" ) {
alert( "American English." );
}
Vanilla JavaScript 更适合读取属性值等琐碎任务
这在 WordPress 中对我有用
jQuery(document).ready(function($){ console.log("cons"); if ( $("html:lang(en)").length > 0 ) {
alert( 'US lang detected' );
} });