【问题标题】:jquery input array to slug dynamicallyjquery输入数组动态slug
【发布时间】:2012-04-04 11:45:24
【问题描述】:

我正在开发一个 CMS 系统,以“尝试”原生支持多语言。

我有类似的表单字段

<input name="title[en]" type="text">

并使用当我选择输入字段时成功运行的 slugger 插件:

$("input[name=title\\[en\\]]").stringToSlug({getPut: "input[name=url\\[en\\]]"});

问题是:我的en,fr,de,es 值来自db。如何使foreach 循环告诉jquery 它应该为多种语言编写同一行,例如:

$("input[name=title\\[en\\]]").stringToSlug({getPut: "input[name=url\\[en\\]]"});
$("input[name=title\\[fr\\]]").stringToSlug({getPut: "input[name=url\\[fr\\]]"});
$("input[name=title\\[de\\]]").stringToSlug({getPut: "input[name=url\\[de\\]]"});
$("input[name=title\\[es\\]]").stringToSlug({getPut: "input[name=url\\[es\\]]"});

【问题讨论】:

    标签: javascript jquery jquery-plugins jquery-selectors slug


    【解决方案1】:

    这仅涉及一种简单的重构技术:循环。如果你创建了一个你想要使用的语言数组,你可以使用 jQuery .each method 来实现这一点。

    $.each(["en", "fr", "de", "es"], function(index, lang) {
      $("input[name=title\\[" + lang + "\\]]").stringToSlug({getPut: "input[name=url\\[" + lang + "\\]]"}); 
    }
    

    如果您关心性能并且不希望 .each 方法涉及的开销,您可以改用传统的 for 循环:

    var langs = ["en", "fr", "de", "es"];
    for(var i = 0; i < langs.length; i++) {
      var lang = langs[i];
      $("input[name=title\\[" + lang + "\\]]").stringToSlug({getPut: "input[name=url\\[" + lang + "\\]]"}); 
    } 
    

    【讨论】:

      【解决方案2】:

      你可能会使用这样的东西:

      $.each(['en','fr','de','es'], function (i, lang) {
        $("input[name=title\\["+lang+"\\]]").stringToSlug({getPut: "input[name=url\\["+lang+"\\]]"});
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        相关资源
        最近更新 更多