是否有jQuery的indexOf的替代品?

时间:2014-12-20 21:59:43

标签: javascript jquery google-translate

我在改进翻译脚本的过程中,脚本本身实际上工作正常(在大多数计算机上)。我们发现该脚本在母语不是英语的计算机上无法正常运行。

脚本如下:

$('.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-links a类似于:

 <li><a href="#" data-country="south-africa" data-lang="Afrikaans"><span class="south-africa"></span>Afrikaans</a></li>

有问题的一行是

if($(this).text().indexOf(lang) != -1) {

我们已通过故障排除将其缩小到该行,但我们想知道是否有其他方法可以将其写入以防止此问题。也许是indexOf的替代品?我们不确定母语为何如此重要,所以如果有人对此有所了解,我们也会感激它!

1 个答案:

答案 0 :(得分:1)

您似乎应该在点击的元素“data-lang字符串和选项value之间寻找匹配,这两个元素都应该免于翻译。

如果是这样,那么它应该如下:

$('.translation-links a').on('click', function(e) {
    e.preventDefault();
    $('#google_translate_element select').eq(0).val($(this).data('lang')).trigger('change');
});