簡體   English   中英

如何使用jQuery在循環中查找和替換

[英]How to find and replace in loop with jquery

我在這里做了一些搜索,找不到確切的答案來解決這個問題。 我目前有動態div,其中將select元素添加到表單中。 輸入名稱作為數組放置,這些div也可以動態刪除。 我需要找出一種方法,當用戶刪除該div時,下面的div和輸入將被重命名。 我希望這是有道理的。 這是一個示例,在用戶刪除包含輸入字段的div之后會發生什么:

<div class="rooms" id="row1">
  <input type="text" name="room[1][adults]">
  <input type="text" name="room[1][children]">
</div>
<div class="rooms" id="row3">
  <input type="text" name="room[3][adults]">
  <input type="text" name="room[3][children]">
</div>

我需要能夠遍歷.rooms div並找到並替換輸入的name屬性上的數字元素。 因此需要將room[3][adults]更改為room[2][adults] 循環運行時,一次最多可以有8個div。 這就是我的想法,但是我不知道如何在兩者之間替換這個數字。

var i = 1;
$(".rooms").each(function () {
  var thisId = $(this).attr('id');
  var numToFind = thisId.substr(thisId.length - 1);
  $("#"+thisId).find("select[name='room["+numToFind+"][adults]']").replace( 'room["+numToFind+"][adults]','room["+i+"][adults]');
  $("#"+thisId).find("select[name='room["+numToFind+"][children]']").replace( 'room["+numToFind+"][children]','room["+i+"][children]');
  i = i + 1;
});

因此,這幾乎是我能想到的,在此方面提供的任何幫助將不勝感激!

有多個問題

  • find()返回一個沒有replace()方法的jQuery對象
  • 僅使用replace是不夠的,您需要獲取名稱,替換內容並將其重新設置

您可以使用簡單的迭代代替

 var i = 1; $(".rooms").each(function() { $(this).find('input[name^=room]').attr('name', function(idx, name) { return name.replace(/\\[\\d+\\]/, '[' + i + ']'); }); i++; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="rooms" id="row1"> <input type="text" name="room[1][adults]"> <input type="text" name="room[1][children]"> </div> <div class="rooms" id="row3"> <input type="text" name="room[3][adults]"> <input type="text" name="room[3][children]"> </div> <div class="rooms" id="row3"> <input type="text" name="room[3][adults]"> <input type="text" name="room[3][children]"> </div> <div class="rooms" id="row3"> <input type="text" name="room[3][adults]"> <input type="text" name="room[3][children]"> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM