【发布时间】:2014-07-08 19:24:26
【问题描述】:
我正在使我的网站多语言化。因此,当单击语言按钮时,我通过 jQuery 更改文本。这适用于所有文本,但不适用于我在导航中用于悬停效果的链接的标题属性。
链接如下:
<div class="nav-container">
<!-- Navigation for Portfolio -->
<div class="nav" id="services">
<a href="#" class="thumb tr" title="Leistungen" key="menu_business"><span><img src="images/menu_icons/services.png" alt="" /></span></a>
</div>
</div>
对于我使用的文本,例如(有效!):
<h4 class="jobtitle tr" key="companyfield">blabla</h4>
我的函数如下所示:
$(document).ready(function() {
// onclick behavior
$('.lang').click( function() {
var lang = $(this).attr('id'); // obtain language id
// translate all translatable elements
$('.tr').each(function(i) {
if($(this).attr('key').indexOf("menu_") == 0) {
$(this).attr('title', aLangKeys[lang][ $(this).attr('key') ]);
} else {
$(this).text(aLangKeys[lang][ $(this).attr('key') ]);
}
});
});
});
用作字典的数组在这里初始化:
var aLangKeys = new Array();
aLangKeys['de'] = new Array();
aLangKeys['en'] = new Array();
aLangKeys['de']['menu_business'] = 'Leistungen';
aLangKeys['en']['menu_business'] = 'Business';
使用 Firebug 调试函数时,标题为空,但我可以正确看到所有其他属性,例如 href 或 class。
我尝试使用.prop (>= jquery 1.6)、.attr (.title 读取/写入 title。一个都没用。
我使用的 jQuery 包括:
<!-- include jQuery library -->
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<!-- jquery tools script -->
<script type="text/javascript" src="js/jquery.tools.min.js"></script>
<!-- jqtransform script for forms -->
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.tinyscrollbar.min.js"></script>
【问题讨论】:
-
没有帮助。也尝试过像
$(this).attr('title','test123');/$(this).attr('title',"test123");一样对其进行硬编码 -
@Kai - 看起来可以在这里工作:jsfiddle.net/2xpHr。单击
.lang时是否记录了任何错误? -
@Kai - 我刚刚重新制作了尽可能接近您的代码的小提琴,它仍然可以正常工作:jsfiddle.net/2xpHr/3 - 如果有任何错误被抛出,请发布,我可以采取看。
-
@Joe 没有错误被抛出,但也无法看到标题属性的变化
-
@Kai - 你不能用萤火虫检查元素并看到变化吗?或者,如果没有,只需将
console.log($('.tr:first').attr('title'));添加到该函数的末尾以记录第一个.tr的标题属性并检查它是否使用正确的语言。
标签: javascript jquery firebug