jquery输入数组动态slug
Posted
技术标签:
【中文标题】jquery输入数组动态slug【英文标题】:jquery input array to slug dynamically 【发布时间】: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\\]]");
【问题讨论】:
【参考方案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+"\\]]");
【讨论】:
以上是关于jquery输入数组动态slug的主要内容,如果未能解决你的问题,请参考以下文章