Frage

Ich habe so etwas:
// html

<div class="panel">
    <div class="tools">
        <a href="#action1">Action 1</a>
        <a href="#action1">Action 1</a>
        <a href="#action1">Action 1</a>
    </div>
    <div class="list">
        <table>...</table>
    </div>
</div>

// JavaScript (jQuery)

var lookup = $('.panel'),
    buttons = lookup.find('.tools').detach().find('a');
...
//append buttons somewhere

Also, hier habe ich '.tools' losgelöst von '.panel' Und dann nahm ich Knöpfe und hängte sie woanders hin. Aber was ist mit '.tools' Knoten? Ist es mit Müll gesammelter oder nicht? Muss ich distanziert sparen? '.tools', Nehmen Sie Knöpfe davon und als zerstören Sie es?

Wenn seine Angelegenheit - ein HTML success Handler.

War es hilfreich?

Lösung

In diesem Fall erzeugt die Schaltflächenvariable einen Verweis auf ein Kind des abgetrennten Elements und verhindert, dass das Element Müll sammelt, zumindest bis die Schaltflächen aus dem Zielfernrohr gehen.

BEARBEITEN:

Damit etwas Müll gesammelt werden kann, muss es vom DOM abgelöst werden, und es darf keine JavaScript -Variablen geben, die das Element (oder irgendwelche Elemente innerhalb des abgelösten Knotenbaums) verweisen,

Zum Beispiel:

<div id="a">
  <div id="b">
    <div id="c">
        <div id="d"></div>
    </div>
  </div>
</div>

Wenn Sie "#B" abnehmen und Müll sammeln lassen, können Sie keine Variablen auf Elemente B, C oder D zeigen.

Dies würde nicht funktionieren:

var c = $('#c')

$('#b').detach()

Var C würde einen Verweis auf Element #C beibehalten, das Teil von #B ist, also kann nicht Müll gesammelt werden.

Dies funktioniert auch nicht, da der Abstand einen Verweis auf das Element zurückgibt, das Sie abnehmen.

var b = $('#b').detach()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top