2011-02-07 73 views
1

我想克隆窗體內的div。我的想法是讓用戶在我的應用程序中插入多個條目。jquery .clone()不工作

div .anotacao包含用戶需要輸入的所有字段。所以通過克隆它,我可以允許用戶一次插入n個條目。

<div class="anotacao"> 
      <div class="field"> 
      <input id="date" name="date" value="<?=date('d/m/Y');?>" class="date" /> 
      </div> 

      <div class="field"> 
      <span class="label">às</span> 
      <input id="hour" name="hour" value="<?=date('h');?>" class="smallest" /> 
      <span class="label">:</span> 
      <input id="minutes" name="minutes" value="<?=date('i');?>" class="smallest" /> 
      </div> 

      <div class="field"> 
      <?=form_dropdown('event',$this->entry->list_events(),'','id="event" class="event select"');?> 
      </div> 

      <div class="field valor"> 
      <input id="valor" name="valor" value="anotação" class="entry" /> 
      <span class="show-type"></span> 
      </div> 

      <div class="field obs"> 
      <input id="obs" name="obs" value="obs" class="obs" /> 
      </div> 
     </div> 

要克隆這個,我有一個與.add-line類的鏈接。當用戶通過調用點擊這個鏈接我嘗試克隆DIV這個JS:

$('.add-line').live('click', function(event){ 
$('.anotacao').clone().removeClass('anotacao'); 
return false; 

});

這似乎是正確的,但我沒有克隆或任何東西。例如,如果我刪除克隆功能併發出警報,則會顯示警報。

回答

6

當你調用.clone(),它需要被附加的東西。試試這個:

$('.add-line').live('click', function(event){ 
    $('.anotacao').clone().appendTo('#anotacao-container'); 
    return false; 
}); 

<div id="anotacao-container"> 
    <div class="anotacao"> 
    ... fields here  
    </div> 
</div> 
1

你必須實際上東西與.clone()返回的值。 jQuery不會將克隆的元素插入到標記中。

$('.add-line').live('click', function(event){ 
    var $source = $('.anotacao'); 
    $source.clone().removeClass('anotacao').after($source); 
    return false; 
}); 

您需要確保只選擇單個div.anotacao每次克隆;否則你最終會得到數量呈指數級增長的克隆!哎呀,忘記removeClass()照顧了!

0

您需要指定您想要的位置appendTo

1

試着在後面加上它

$(this).append($('.anotacao').clone().removeClass('anotacao'));