使用Jquery在多维数组中增加键名

Posted

技术标签:

【中文标题】使用Jquery在多维数组中增加键名【英文标题】:Increment key name in multidimensional array with Jquery 【发布时间】:2021-07-20 08:42:24 【问题描述】:

我正在尝试制作“复制”选项,并且我正在使用克隆来做到这一点。

我有多个这样的输入:

name="items[id-1][recepti][1][name]"
name="items[id-1][recepti][1][media]"

当我点击重复时,它需要克隆并更改为:

name="items[id-1][recepti][2][name]"
name="items[id-1][recepti][2][media]"

这是我当前的代码:

$(document).on("click",".duplicate_recept",function(e)
    e.preventDefault();
    var copy      = $(this).closest(".recepti-dodaci").clone(); // clone
    var obrok_id  = $(this).closest(".ishrana").attr("data-id"); // this is key in [id-]
    var recept_id = $(this).closest(".recepti-dodaci").attr("receptid"); // this is current KEY after [recepti]
    var recept_count = sets_count(obrok_id,"recept") + 1; // this needs to be set after [recepti]
    copy.attr("id","recept_"+obrok_id+"_"+recept_count).attr("receptid",recept_count); // this works fine

    copy.find("input[name*='[recepti]["+recept_id+"]']").attr('name', function(_, name)
      return name.replace("input[name*='[recepti]["+recept_id+"]']", "input[name*='[recepti]["+recept_count+"]']")
    ); // this doesnt work

    $("#is-"+obrok_id+" .svi_recepti").append(copy);

  );

【问题讨论】:

那么,什么在这里不起作用?另外,请显示您的 html 代码。 @Swati 它不会找到输入和更改密钥。 【参考方案1】:

我设法做到了,它真的很简单,我可能真的很累

copy.find("input[name*='id-"+obrok_id+"']").attr('name', function(_, name)
  return name.replace('[id-'+obrok_id+'][recepti]['+recept_id+']', '[id-'+obrok_id+'][recepti]['+recept_count+']')
);

【讨论】:

以上是关于使用Jquery在多维数组中增加键名的主要内容,如果未能解决你的问题,请参考以下文章

php 多个多维数组求交集

PHP array_multisort—对多个数组或多维数组进行排序

使用jquery从表单中选择多维数组

jQuery 创建多维数组

使用 jQuery 访问多维 JSON 数组中的数据

jquery push 制作多维数组