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)これを実現する方法は2つあります。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);

2番目のアプローチの問題は、.find。それぞれが非同期のアプローチであり、そのチェックボックスのIDを探して設定しようとするまでに、名前の変更が行われていない可能性があります。

したがって、アプローチ1の方が安全だと思いましたが、セレクター内でのみIDを確認する方法がわかりません。

誰かが私を正しい方向に向けてもらえますか?

4

2 に答える 2

0

IDを見つけるには、以前と同じように.findを使用します。シンプル?

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 に答える