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');
});