2013-02-25 191 views
0

我使用jQuery的動態選擇和克隆DIV

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

這部分工程確定一個<select id='group1'>下拉用於填充一個<textarea id='group2'>。現在,我想克隆此<div id='tableline_00'>和分配新id S使用

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的新手,所以任何幫助/鏈接都很有用......也許有不同的方法?

+0

VAR一個= '組1',B = '組2'; $('#'+ a).on('change',function(e){}); $('#'+ a).on('change',function(e){}); $('#'+ b).on('change',function(e){}); – robert 2013-02-25 01:18:54

+0

有兩件事:(a)使用類而不是ID。 (b)使用事件委派,如下所述:http://stackoverflow.com/questions/12829963/events-triggered-by-dynamically-generated-element-are-not-captured-by-event-hand。 – 2013-02-25 01:33:23

+0

謝謝大家,我會馬上試試看。 – 2013-02-25 01:43:11

回答

1

好的,所以我跟着菲利克斯鏈接,它的工作原理。這是最後的代碼,以防別人需要它。我也對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'); 
    }