2012-06-01 9 views
5

Ich habe zwei div-Elemente in einem anderen. Manchmal werden diese beiden Elemente durch Benutzerinteraktivität entfernt und zwei neue Elemente platziert.Proper Weg zum Entfernen und Hinzufügen neuer HTML mit jQuery

Ist es richtig, zuerst die vorhandenen Elemente zu entfernen? Oder einfach den HTML-Code überschreiben? Oder ist es überhaupt wichtig?

$('#item1').remove(); 
$('#item2').remove(); 
$('#itemWindow').append(newItem1); 
$('#itemWindow').append(newItem2); 

Oder einfach

$('#itemWindow').html(newItem1); 
$('#itemWindow').append(newItem2); 

Ein kleiner Code, sollte aber das Element stattdessen entfernt werden? Die Elemente haben keine Zuhörer, aber wenn sie das tun, macht das einen Unterschied?

Ich bin ein ActionScript-Entwickler, der in JS und jQuery eintaucht. Wenn in AS Listener vorhanden sind, ist es richtig, das Element zuerst zu entfernen, um Verbindungen mit dem Objekt zu trennen, um eine ordnungsgemäße Speichersammlung zu erhalten. Sind diese Regeln mit JS und jQuery identisch?

Danke!

+0

Ich denke, die Antwort in Bezug auf die Listener wird davon abhängen, ob Sie den Listener wiederverwenden wollen ... – Jared

+2

Wenn Sie den jQuery-Quellcode anzeigen, werden Sie feststellen, dass html() -Methode funktioniert wie> this.empty () .append (Wert). Sie sind komplizierter, wo Sie nicht brauchen ;-) Verwenden Sie zu kürzerem Code, wie> $ ('# itemWindow') .html (newItem1) .append (newItem2); –

Antwort

3

Sie haben keinen Unterschied. Sie können also die zweite Methode verwenden. wie, wenn Sie diesen

$('#itemWindow').html(newItem1); 

$('#item1') und $('#item2') ersetzt werden verwenden. Sie können also überspringen, diese manuell zu entfernen.

Wie @ Glavić in Kommentar erwähnt, wenn Sie bei der Definition von html Methode in jQuery Quelle hier https://github.com/jquery/jquery/blob/master/src/manipulation.js#L213 Sie werden am Ende herauszufinden, dass es diese Zeilen hat

if (elem) { 
    this.empty().append(value); 
} 

Wo in diesem Fall elem wahr ist . Also wird das Element emptied sein und dann wird das neue Element appended sein.

Und wenn sie Zuhörer hatte, dann müssen Sie die Zuhörer in einer Weise binden, damit es mit dynamisch zugefügten Elementen wie mit $.on

0

$ (‚# item1‘) arbeitet entfernen(). wird das Element mit der ID item1 entfernen

$ ('# item1') .html (newItem1); wird das html innerhalb des Elements mit id item1 setzen

0

Wenn Sie spezifisch über das sein möchten, was Sie wirklich entfernen, sagen Sie, dass, wenn Sie ein Element haben, das entfernt werden muss, aber nicht das andere, dann empfehle ich die erste Methode. Wenn Sie einfach jedes Mal alles ersetzen wollen, dann zögern Sie nicht, entweder zu verwenden, oder das einzige Problem ist dann, was für Sie lesbarer ist.

0

Wenn Element einen Listener hat, dann ist die erste Methode geeigneter. .remove() entfernt Objekte selbst und alle gebundenen Ereignisse. Wenn Element entfernt wird, aber kein Ereignis, kann in Zukunft ein Fehler auftreten. aber wenn kein begrenztes Ereignis, kann zweite Methode verwendet werden - coz weniger Code.

Verwandte Themen