我需要通过在每次删除时动态计算属于同一个“家庭”的礼物来更新元素的父元素id
的所有li
兄弟$(this)
元素li
。
请注意,ul.customFieldUl
页面上有多个li.customFieldLi
,每个页面上都有多个。
$('.customFieldUl').on('click', '.remove-button', function() {
var field = $(this).parents('li.customFieldLi');
if (field.length) {
field.remove();
// PROBLEMATIC SELECTOR BELOW:
$(this).parent().siblings().each(function(i) {
var id = i + 1;
$(this).prop('id', 'field_' + id);
$(this).find('label#top_title').html('Custom Field #: <b>' + id + '</b> »');
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="customFieldUl">
<li class="customFieldLi">
<label id="top_title">Additional Field</label>
<div class="additionalFieldForm"></div>
<div class="remove-button">Remove</div>
</li>
<li class="customFieldLi">
<label id="top_title">Additional Field</label>
<div class="additionalFieldForm"></div>
<div class="remove-button">Remove</div>
</li>
</ul>
你需要为目标siblings()
的LI
去除之前LI
的元素。
$('.customFieldUl').on('click', '.remove-button', function() {
var field = $(this).closest('li.customFieldLi');
//Take reference of siblings
var siblings = field.siblings();
//Remove element
field.remove();
// Now iterate and update properties.
siblings.each(function(i) {
var id = i + 1;
$(this).prop('id', 'field_' + id);
$(this).find('label#top_title').html('Custom Field #: <b>' + id + '</b> »');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="customFieldUl">
<li class="customFieldLi">
<label id="top_title">Additional Field</label>
<div class="additionalFieldForm"></div>
<div class="remove-button">Remove</div>
</li>
<li class="customFieldLi">
<label id="top_title">Additional Field</label>
<div class="additionalFieldForm"></div>
<div class="remove-button">Remove</div>
</li>
</ul>
HTML 中的标识符必须是唯一的,您id="top_title"
多次使用这会导致 HTML 无效
注意:我完全同意@Rory 的评论,动态更改id
属性不是一个好主意
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句