Javascript - 删除重复的条目

时间:2015-01-17 12:35:12

标签: javascript jquery regex duplicate-removal

我正在尝试使用gem nested_form编译this bug的变通方法。不需要知道ruby / rails,这一切都与javascript有关。

简而言之,当我的页面重新加载时,我有一些具有相同模型ID的重复字段(在隐藏输入的value属性中)。

编辑:添加了值为50的非重复输入,不应修改

<tbody class="echange fields>
   ...
   <input id="etude_echanges_attributes_0_id" type="hidden" name="etude[echanges_attributes][0][id]" value="42">
</tbody>
<tbody class="echange fields>
  ...
  <input id="etude_echanges_attributes_1_id" type="hidden" name="etude[echanges_attributes][1][id]" value="42">
</tbody>
<tbody class="echange fields>
  ...
  <input id="etude_echanges_attributes_2_id" type="hidden" name="etude[echanges_attributes][1][id]" value="50">
</tbody>

2个第一个输入值为42.只有最后一个是好的,第一个是重复。所以基本上我需要一个代码来扫描所有id=".*attributes_x_id"及其value,并且只保留最后一个代码。

所以在我上面给出的例子中,javascript应该检测到......

<input id="etude_echanges_attributes_0_id" ... value="42">
<input id="etude_echanges_attributes_1_id" ... value="42">

...具有相同的42值,这意味着它们是重复的

然后它会删除除最后一个之外的所有内容。此外,不应修改以下内容,因为它是模型ID值为50

的唯一一个
<input id="etude_echanges_attributes_2_id" ... value="50">

编辑:可以更改的参数是

  • 模型的标识符:_attributes
  • 之前的内容
  • HTML ID:_attribute_xxx
  • 中的xxx
  • 模型ID,对应于inputvalue="yyy"
  • 的值

(注意42和50只是示例,真正的是MongoDB ID,看起来像5470b5075374611500040000)

我想做什么:

  1. 查找与同一实例模型的重复项相对应的<input>(参见上文)
  2. 处理除最后一个之外的所有人:
  3. echanges
  4. 中提取_echanges_attributes_
  5. 将其单独化,使其成为echange
  6. 按类“echange fields”
  7. 查找父级
  8. 从DOM中删除此元素
  9. 现在,对我来说一个问题的步骤是步骤1。我不知道用简单的jquery / css选择器做它是否可行?

1 个答案:

答案 0 :(得分:1)

嗯,你可以在jQuery中做到这一点:

$('input[id^="etude_echanges_attributes"][value="42"]:not(:last)').remove();

我们匹配id以确保我们获得正确的<input>,而不仅仅是<input>。{由于id具有变量值,因此我们无法使用#。因此,我们使用属性选择器来匹配前缀值。同时在选择器中放入value