我已经创建了一个类来在我的一个网页上保存一个接口组件。有一个add
按钮来实例化类并将新元素插入DOM。我想给类一个remove
方法从dom中删除元素,然后销毁实例。
我有这个:
// can have multiple tags
var Tag = new Class({
Implements: [Options, Events],
this.targetElement: undefined,
this.tagName: undefined
initialize: function() {
this.targetElement = new Element('input', { class: 'tag' });
this.targetElement.inject($('tagHolder'));
...
// event handler to set `this.tagName` to contents of the input
...
if (Tag.tags === undefined)
Tag.tags = [];
Tag.tags.push(this);
},
remove: function () {
this.targetElement.destroy();
delete this;
}
这会从DOM中删除该元素,但不会删除该实例对象。
我想使用数组tag.tags
来访问用户创建的所有标记,因此如果用户删除标记,我希望从数组中删除该标记,或者将其设置为{ {1}}或类似的。由于不再需要标记实例,因此在此时删除/准备GC对象是有意义的,这样就不会浪费内存。
我该怎么做,或者这是一个愚蠢的方法?还有更好的方法吗?
答案 0 :(得分:1)
你应该可以使用Array.erase
来解决任何问题。
将您的删除方法更改为:
remove: function () {
this.targetElement.destroy();
Array.erase(Tags.tags, this);
// reset reference
}