使用jQuery检测html lang

时间:2015-11-11 17:19:33

标签: jquery html multilingual lang

我在Wordpress中使用多语言插件,可让用户在网站上更改语言选项。

此插件除了其他内容外,还会更改HTML语言属性,例如

<html lang="en-GB">

<html lang="en-US">

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

if ($( 'html:lang(en-us)')) {
    alert('US lang detected');
}

然而,这会产生误报,因为页面下方的其他元素会被设置为“我们”&#39;即使开头HTML属性设置为&#39; en-GB&#39;。

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

6 个答案:

答案 0 :(得分:3)

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

$( 'html:lang(en-us)')将返回一个jQuery对象。 jQuery对象始终真实,因此if语句将始终评估为true。

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

if ($('html').is(':lang(en-us)')) {
    alert('US lang detected');
}

答案 1 :(得分:2)

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

if ( document.documentElement.lang.toLowerCase() === "en-us" ) {
    alert( "American English." );
}

Vanilla JavaScript更适合于阅读属性值等琐事。

答案 2 :(得分:1)

$('html[lang="en-us"]')

应该这样做。

答案 3 :(得分:1)

您必须检查length

if ( $("html:lang(en-us)").length > 0 ) {
    alert( 'US lang detected' );
}

答案 4 :(得分:0)

您可以将lang作为attr获取,就像代码段

中的代码一样

&#13;
&#13;
console.log($("html").attr("lang"));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html lang="en">
<head></head>
  <body></body>
</html>
&#13;
&#13;
&#13;

答案 5 :(得分:0)

这在 WordPress 中对我有用

jQuery(document).ready(function($){ console.log("cons"); if ( $("html:lang(en)").length > 0 ) {
   alert( 'US lang detected' );
} });