2011-01-11 3 views
0

Sie können ein Element mit seinen Ereignissen und Daten klonen, aber dann gelten die Ereignisse immer noch für das ursprüngliche Objekt und nicht für das neue Objekt.Wie klonen Sie Ereignisse und Daten zu klonen, sondern auf den neuesten Klon anzuwenden?

I jsfiddle verwendet haben, das Problem zu demonstrieren: http://jsfiddle.net/VZZG4/

zu reproduzieren: 1. Drücken Sie die Taste Klon 2. Im neuen Texteingabe, geben Sie „Neu“ 3. Drücken Sie die neue Klon-Taste Tatsächliches Ergebnis: Der neueste Klon lautet "Test" Erwartetes Ergebnis: Der neueste Klon lautet "Neu"

Frage: Wie klonen Sie Ereignisse und Daten zum Klonen, sondern gelten sie für den neuesten Klon?

Antwort

2

Einsatz am nächsten(), um das erwartete Element zu klonen ...

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

updated fiddle

und ich schlage vor, Sie class anstelle eines id zu verwenden. Duplikat id ist kein gültiger HTML-Code.

+0

Verwendung am nächsten() scheint zu sein, die Antwort. Entschuldigen Sie die IDs, ich habe diesen Testfall hastig zusammengestellt. Wie auch immer, das ist alles sehr gut, bis Sie versuchen, es auf Trovster's Duplicate/Remove Jquery Plugin anzuwenden ... (http://www.trovster.com/lab/plugins/duplicate-remove/) – HM2K

2

Sie machen den Fehler, Objekte mit IDs zu klonen. Wenn Sie in den meisten Browsern mehrere Elemente mit derselben ID haben, wird die erste zurückgegeben. Daher gibt $('#container') immer die erste mit dem Wert Test zurück.

Geben Sie stattdessen die Elemente an, die geklont werden sollen.

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'); 
    }); 
}); 

Überprüfen Sie die modifizierte Version des Codes http://jsfiddle.net/VZZG4/2/

Referenz:closest