jQuery动态选择和克隆div

时间:2013-02-25 01:13:42

标签: jquery dynamic clone

我有<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]) ;
        });
    });

这部分工作正常。现在,我正在尝试克隆此<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的新手,所以任何帮助/链接都很有用......也许是不同的方法?

1 个答案:

答案 0 :(得分: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');
    }