0

受此答案的启发,正在使用 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。

有人可以指出我正确的方向吗?

4

2 回答 2

0

像以前一样使用 .find 来查找 ID。单纯?

http://api.jquery.com/find/

于 2012-09-24T09:33:12.427 回答
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);
于 2012-09-24T09:39:40.060 回答