/ / Dojo: ako odstrániť / zničiť uzol z NodeList pre real - javascript, dojo

Ako odstrániť / zničiť uzol z. V reálnom - javascript, dojo

Tu mám zoznam uzlov a identifikovaných uzlov, ktoré chcú zo zoznamu odstrániť (z pohľadu aj z pamäte).

var currentRow = dojo.query(this).parents("div").first()[0];
var parentDiv = dojo.query(currentRow).parents("div").first()[0];
var rowList = dojo.query(parentDiv).children();

Problém je,

dojo.destroy(currentRow);

odstrániť iba currentRow z pohľadu, ale keď som slučku rowList, od firebug Stále vidím, že veľkosť riadkuList je pôvodná veľkosť bez mínus odstránenia, takže sa zdá, že zostane v pamäti, ako teda môžeme odstrániť uzol z uzlaList a vrátiť nový uzolList?

odpovede:

1 pre odpoveď č. 1

Ničenie uzla nemanipuluje rowList pole, iba odstráni uzol zo stromu DOM. To znamená, že máte currentRow uzol medzipamäte v rowList pole (a tiež v currentRow premenná). Uzly DOM sú objekty JavaScript, keď ich odstránite zo stromu DOM, neskôr sa stanú odpadmi zhromaždenými virtuálnym strojom JavaScript, ak nie sú dosiahnuteľné.

V tomto prípade stačí dotaz rowList po (alebo znovu po) volaní dojo.destroy:

var currentRow = dojo.query(this).parents("div").first()[0];
var parentDiv = dojo.query(currentRow).parents("div").first()[0];

dojo.destroy(currentRow);
currentRow = null;

var rowList = dojo.query(parentDiv).children();

ak currentRow je globálne dosiahnuteľné null.

Vidieť to v akcii: http://jsfiddle.net/phusick/9MaUn/

Prečítajte si viac v Addy Osmani Rýchle písanie a efektívne JavaScript.