2011-01-11 60 views
0

您可以使用事件和數據克隆元素,但事件仍然適用於原始對象而不是新對象。你如何克隆事件和數據克隆,但適用於最新的克隆?

我已經使用的jsfiddle證明問題:http://jsfiddle.net/VZZG4/

重現: 1.點擊克隆按鈕 2.在新的文本輸入,類型爲「新建」 3.打新克隆按鈕 實際結果:最新的克隆說「測試」 預期結果:最新的克隆說「新」

問題:如何克隆事件和數據克隆,但適用於最新的克隆?

回答

2

用最接近()克隆預期的元素...

$(document).ready(function() { 
    $('#clone').click(function() { 
     $(this).closest('#container').clone(true).appendTo('#wrap'); 
    }); 
}); 

updated fiddle

,我建議你使用class代替id的。重複id是無效的HTML。

+0

使用最接近()似乎是答案。不好意思,我匆匆把那個測試用例放在一起。無論如何,這一切都很好,直到你嘗試將它應用到trovster的重複/刪除jquery插件...(http://www.trovster.com/lab/plugins/duplicate-remove/) – HM2K 2011-01-11 12:31:03

2

您犯了一個錯誤,即使用ID克隆對象。在大多數瀏覽器中,如果您有多個具有相同ID的元素,則會返回第一個元素。因此$('#container')將始終返回值爲Test的第一個值。

給出應該克隆類的元素。

HTML:

<div id="wrap"> 
    <div class="container"> 
     <input type="text" class="edit" value="Test"> 
     <input type="button" class="clone" value="Clone"> 
    </div> 
</div> 

的JavaScript:

$(document).ready(function() { 
    $('.clone').click(function() { 
     $(this).closest('.container').clone(true).appendTo('#wrap'); 
    }); 
}); 

檢查你的代碼http://jsfiddle.net/VZZG4/2/

參考修改後的版本:closest