jquery将数组动态地输入到slug

jquery input array to slug dynamically

本文关键字:输入 slug 动态 数组 jquery      更新时间:2023-09-26

我正在开发一个CMS系统,该系统"尝试"本机支持多语言。

我有类似的表单字段

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

并使用一个在我选择输入字段时成功工作的插件:

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

问题是:我的en,fr,de,es值来自数据库。如何制作一个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'']]"});

这只涉及一个简单的重构技术:生成一个循环。如果您创建了一个要使用的语言数组,您可以使用jQuery .each方法来实现这一点。

$.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 + "'']]"}); 
} 

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

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