Javascript 对于jQuery,是否有替代indexOf的方法?
我正在完善翻译脚本,而脚本本身实际上工作得很好(在大多数计算机上)。我们发现脚本在母语不是英语的计算机上无法正常工作 脚本如下:Javascript 对于jQuery,是否有替代indexOf的方法?,javascript,jquery,google-translate,Javascript,Jquery,Google Translate,我正在完善翻译脚本,而脚本本身实际上工作得很好(在大多数计算机上)。我们发现脚本在母语不是英语的计算机上无法正常工作 脚本如下: $('.translation-links a').click(function(e) { e.preventDefault(); var lang = $(this).data('lang'); $('#google_translate_element select option').each(function(){
$('.translation-links a').click(function(e) {
e.preventDefault();
var lang = $(this).data('lang');
$('#google_translate_element select option').each(function(){
if($(this).text().indexOf(lang) != -1) {
$(this).parent().val($(this).val());
var container = document.getElementById('google_translate_element');
var select = container.getElementsByTagName('select')[0];
triggerHtmlEvent(select, 'change');
}
});
});
.translation链接a
类似于:
<li><a href="#" data-country="south-africa" data-lang="Afrikaans"><span class="south-africa"></span>Afrikaans</a></li>
我们已经通过故障排除将其缩小到了这一行,但我们想知道是否有其他方法来编写它,以防止出现问题。也许是indexOf的替代品?我们不清楚为什么母语很重要,所以如果有人对此也有一些见解,我们将不胜感激 您似乎应该在单击的元素的
数据lang
字符串和选项的值之间寻找匹配项,这两者都不受转换的影响
如果是这样,那么应该简单到:
$('.translation-links a').on('click', function(e) {
e.preventDefault();
$('#google_translate_element select').eq(0).val($(this).data('lang')).trigger('change');
});
您能展示一下$(this.text)中的内容吗?我将给出一个翻译链接的示例,这样您就可以看到数据拉入的内容。@Johan对于在字符串上使用indexOf()不是等效的$.inArray()
用于处理没有任何数组.prototype.indexOf
方法的旧浏览器。但是IIRC,所有的浏览器都支持String.prototype.indexOf
method在使用其他母语的浏览器上看到相同的文本吗?我的意思是,他们不会翻译语言标签吗?但不管怎样,值(语言前缀)保持不变。例如,西班牙语和西班牙语,但两者的值均为“es”
$('.translation-links a').on('click', function(e) {
e.preventDefault();
$('#google_translate_element select').eq(0).val($(this).data('lang')).trigger('change');
});