受此答案的启发,我正在使用 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。
有人可以指出我正确的方向吗?