我在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属性?
答案 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获取,就像代码段
中的代码一样
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;
答案 5 :(得分:0)
这在 WordPress 中对我有用
jQuery(document).ready(function($){ console.log("cons"); if ( $("html:lang(en)").length > 0 ) {
alert( 'US lang detected' );
} });