【问题标题】:Is there an alternative to indexOf for jQuery?jQuery 有没有 indexOf 的替代品?
【发布时间】:2014-12-20 21:59:42
【问题描述】:

我正在完善翻译脚本,脚本本身实际上运行良好(在大多数计算机上)。我们发现该脚本在母语不是英语的计算机上无法正常运行。

脚本如下:

$('.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 的替代品?我们不确定为什么母语很重要,所以如果有人对此也有一些见解,我们将不胜感激!

【问题讨论】:

  • 你能显示$(this).text中的内容吗?
  • 我会举一个翻译链接的例子,这样你就可以看到数据提取了。
  • @Johan 与在字符串上使用 indexOf() 不等效。 $.inArray() 是在没有任何 Array.prototype.indexOf 方法的情况下处理旧浏览器。但是IIRC,所有浏览器都支持String.prototype.indexOf方法
  • 您是否在其他本地语言的浏览器上看到相同的文本?我的意思是,他们不会翻译语言标签吗?
  • 但是值(语言前缀)无论如何都保持不变。例如,西班牙语与西班牙语,但两者都有一个 value 的“es”

标签: javascript jquery google-translate


【解决方案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');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多