所以我有一個 MVC 應用程式,我想用標簽克隆 div,但我的問題是,當我克隆 1 次時一切正常,然后我第二次克隆但它會克隆前兩個專案。
我試圖從這個小提琴中重現完全相同的內容,因為它正在做我想做的事:https : //jsfiddle.net/Bala_chandran/vz58n67r/7/
所以這是我的添加專案功能,它與小提琴幾乎相同,所以我不知道為什么它不表現得像它。
var id = 0;
jQuery(document).ready(function() {
var max = 10;
jQuery('#add_item').click(function() {
var button = $('#item_details').clone(true);
id ;
button.find('input').val('');
button.removeAttr('id');
button.insertBefore('.new_item_details');
button.attr('id', 'new_' id);
});
});
注意:我要克隆的 div 包含一個 EditorFor,它用于顯示所有輸入欄位,并且我在代碼中添加了 somme // 注釋以顯示包含我要克隆的專案和添加按鈕的 div 的位置。
誰能幫我告訴我為什么這不一樣?非常感謝。
<div class="card">
<div class="card-header" id="headingFrHospCmx@(i)">
<h2 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseFrHospCmx@(i)" aria-expanded="false" aria-controls="collapseTwo">
<b>TEST</b> TEST Hospitalisation
</button>
</h2>
</div>
<div id="collapseFrHospCmx@(i)" class="collapse @ViewBag.ExpandHospitalisation" aria-labelledby="headingTwo" data-parent="#accordionExample">
<div class="card-body">
<div id="ListeFraisHospitalisation@(i)_Global">
@for (int y = 0; y
< Model.Formulaire.Detail.DetailCmp.ListeCmpt.ListeCmptETS[i].ListeHospitalisation.Liste_Hospitalisation.Count; y ) { <div style="border:1px solid black;" id="FraisHospitalisation@(i)_@(y)" class="classHospitalisation@(i)">
<div class="item_details"> // item i want to clone @Html.EditorFor(x => Model.Formulaire.Detail.DetailCmp.ListeCmpt.ListeCmptETS[i].ListeHospitalisation.Liste_Hospitalisation[y])
<a href="#" name="remove_item" class='remove' id="remove_item">Delete</a> //where i delete
</div>
</div>
}
</div>
<div id="new_item_details" class="new_item_details"></div>
<p style="margin:0px 0px 0px 0px;">
<a href="javascript:void(0)" name="add_item" id="add_item" style="font-weight:bold;font-size:16px;">Add New Item Here</a> // place i click to clone
</p>
</div>
</div>
</div>
uj5u.com熱心網友回復:
兩點說明:
- 我
clone只會在模板上使用,例如,用戶實際上并未使用的元素。這樣您就不必撰寫額外的代碼來“清理”用戶在您克隆的元素中所做的任何更改。模板基本上是一段存在于 DOM 中但對用戶不可見的 HTML(例如display: none;)。 - 洗掉邏輯不必依賴于計算
id它是哪一行。您可以使用e.currentTarget傳入事件來確定它是哪一行。
uj5u.com熱心網友回復:
給定的 ID 只允許一個元素。
您只需克隆一項。您可以使用以下方法實作:
$("#item_details").first().clone(true);
如果您單擊第一行洗掉,則每次都會減少 id。所以負值是可能的。
洗掉鏈接也將始終洗掉最后添加的鏈接,而不是點擊的鏈接。
要洗掉行,在點擊的地方最好添加對父 div 的搜索,$(this).parents('div[id^="new_"]').remove();或者讓我們成為一個類,$(this).parents('.item-details')并且不要減少 var id。使用它,您還可以通過以下方式防止最后一個被洗掉:
if ($('.item-details').length > 1)
$(this).parents('.item-details').remove();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/365879.html
