受到这个答案的启发here我使用jquery克隆一组元素,并在.find .each循环中相应地重命名id以使它们保持唯一。
像这样:newElement.find(':input').each(function() {
var name = $(this).attr('name').replace('-' + 0 + '-','-' + total + '-');
var id = 'id_' + name;
$(this).attr({'name': name, 'id': id}).val('').removeAttr('checked');
});
到目前为止,我的目标是检查那里的复选框以及最初克隆的表单。
1)我有两种方法可以实现这一点,我在重命名id之前在选择器中设置了复选框。
$newElement ??? --> $('#id_deals-0-is_form_cloned_by_ajax').prop('checked', true);
2)或者我等到id被重命名并且变得独一无二:
$('#id_deals-' + total + '-is_form_cloned_by_ajax').prop('checked', true);
第二种方法的问题是.find。每个都是异步方法,当我尝试查找该复选框的id来设置它时,可能还没有重命名。
因此我认为方法一更安全,但我不知道如何仅在选择器中检查ID。
请问有人指出正确的方向吗?
答案 0 :(得分:0)
像以前一样使用.find来查找ID。 Simples?
答案 1 :(得分:0)
$newElement.find(':input').each(function() {
var name = $(this).attr('name').replace('-' + 0 + '-','-' + total + '-');
var id = 'id_' + name;
$(this).attr({'name': name, 'id': id}).val('').removeAttr('checked');
});
// Find an element within $newElement
$newElement.find('#id_deals-' + total + '-is_form_cloned_by_ajax').attr('checked', true);