2013-07-30 1 views
0

Я пытаюсь добавить динамические поля с именем массива, я сделал это, какDiv не добавляется более одного раза в jquery?

<div class="extra_subject"></div> 
<button class="add_sub btn">Add</button> 
<button class="rem_sub btn">Remove</button> 

В JS я сделал

var subject_div = $('<div class="sub_add_extra">' 
    +'<div class="control-group">' 
     +'<label for="sub_form" class="control-label">Subject</label>' 
     +'<div class="controls">' 
      +'<select name="add_subject[]">' 
       +'<option value="">Please Select</option>' 
       <?php foreach($sub as $row){ ?> 
        +'<option value="<?php echo $row->id; ?>" ><?php echo $row->subject_name; ?></option>' 
       <?php } ?> 
      +'</select>' 
     +'</div>' 
    +'</div>' 
+'</div>'); 
$('.add_sub').click(function(e){ 
    e.preventDefault(); 
    $('.extra_subject').append(subject_div); 
}); 
$('.rem_sub').click(function(e){ 
    e.preventDefault(); 
    $('.sub_add_extra').last().remove(); 
}); 

Его содержанием добавляемого в первый раз, а затем, когда я пытаюсь добавить его перезапись существующий div с классом .sub_add_extra и удаляет правильно, когда я нажимаю remove.

+1

Добавить 'subject_div' как строку, а не объект jQuery, [см. Здесь] (http://jsfiddle.net/4hWp2/3/). Я не знаю, почему добавление объекта не работает, надеюсь, кто-то может предложить объяснение. – billyonecan

+0

Что произойдет, если вы измените $ ('. Extra_subject'). Append (subject_div) на $ (subject_div) .appendTo ('. extra_subject ')? – nocturns2

+0

@ nocturns2 Было бы так же – anu

ответ

3

Использование clone()

$('.add_sub').click(function(e){ 
    e.preventDefault(); 
    $('.extra_subject').append(subject_div.clone()); 
}); 

DEMO HERE Прямо сейчас вы снова и снова, добавляя тот же объект. clone() создаст клон этого объекта и добавит этот клонированный объект каждый раз. Если у вас было какое-то событие, прикрепленное к исходному объекту, используйте clone(true)

+0

Я знаю, что я бы клонировал, но многое нужно было назначить и манипулировать в этом div, поэтому я создал объект jquery. но это должно быть добавлено как нормальная функция добавления, но переписывание какой-либо конкретной причины. –

+0

@sathya Я объяснил, почему он не работал в моем отредактированном ответе. С какими проблемами вы столкнетесь при манипулировании? – anu

1

Попробуйте мой создание функции, как это и использовать на кнопку он будет работать определенно

function addmoreoption() { 
    var html_option = '<tr valign="center"><td valign="center" bgcolor="#E8E8E8" >Name</td></tr>'; 
    $('#more_option').append(html_option); 
} 
+0

Я теперь использую только как строку :). я думаю, что он воспринимает его как селектор, но также добавляет –

+0

@sathya, так что у вас есть решение или все еще сталкивается с проблемой ??? – Developer