[英]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.