0

usingを入力する<select id='group1'>ドロップダウンがあります<textarea id='group2'>

$('#group1').on('change', function(event) {
        $.post('get_data.php', {sent_id: form1.group1.value },
        function(bounced) {
           var valNew = bounced.split(',');
            $('#group2').html(valNew[0]) ;
        });
    });

この部分は正常に動作します。今、これを複製して、新しいs を使用して入力<div id='tableline_00'>に割り当てようとしていますid

var current_id = 0;
$('#btn').click(function(){
    nextElement($('#tableline_00'));
})

function nextElement(element){
    var newElement = element.clone(true);
    var id = current_id+1;
    current_id = id;
    if(id <10)id = '0'+id;
    newElement.attr('id',element.attr('id').split('_')[0]+'_'+id);
    var field = $('input', newElement).attr('id');
    $('input', newElement).attr('id', field.split('_')[0]+'_'+id );
    newElement.appendTo($('#elements'));
    newElement.slideDown('fast');
}

これも機能しますが、 $('#group1').on('change', function(event)すべての新しいクローン行に新しい入力名があるため、最初の行でのみ機能します。どのように変化$('#group1')し、 変化$('#group2')することができるでしょうか。私はjQueryを初めて使用するので、ヘルプ/リンクは役に立ちます...おそらく別のアプローチですか?

4

1 に答える 1

1

わかりましたので、Felix リンクをたどったところ、動作しました。他の誰かがそれを必要とする場合に備えて、これが最終的なコードです。HTML にもいくつか変更を加えました。

-#elements は、#tableline_00 div を含む div です。

-#tableline_00 は複製される div です。

-「label1」、2、3 などは、ユーザーの選択に基づいて「get_data.php」からの情報を保持する動的に作成されたラベルです。

$('#elements').on('change', 'select', function() {
    handler = $(this).val();
    name = $(this).attr('id');
    $.post('get_data.php', {sent_id: handler },
        function(bounced) {
           var valNew1 = bounced.split(',');
            $('.label' + a).html(valNew1[0]) ;
        });
});

    var a = 0;
    $('#btn').click(function(){
        nextElem($('#tableline_00'));
    })

    function nextElem(element){
        var newElement = element.clone(true);
        a = a + 1;
        $('select', newElement).attr('id','select' + a);
        $('select', newElement).attr('class','select' + a);
        $('select', newElement).attr('value', 'select' + a);
         $('label', newElement).attr('class','label' + a);
        $('label', newElement).attr('value', 'label' + a);
        newElement.appendTo($('#elements'));
        newElement.slideDown('fast');
    }
于 2013-02-25T09:16:09.767 に答える