我只是想将 html 导入一个新节点,并用类“.prototype”去除元素:
var statics = new Element('div');
statics.load('statics.html')
statics.getElements('.prototype').destroy();
statics.inject($('main'));
这不能按预期工作。具有“.prototype”类的元素仍然存在。有什么见解吗?
我只是想将 html 导入一个新节点,并用类“.prototype”去除元素:
var statics = new Element('div');
statics.load('statics.html')
statics.getElements('.prototype').destroy();
statics.inject($('main'));
这不能按预期工作。具有“.prototype”类的元素仍然存在。有什么见解吗?
如果那是未更改的代码,那么该摘录的问题在于Request.HTML
使 asynchronous XMLHttpRequest
.
当.load()
被调用时,它会生成一个XMLHttpRequest
to statics.html
,但在它可以返回 HTML 有效负载之前,脚本的执行将继续,并.getElements('.prototype')
针对statics
当前为空的 运行div
,因此没有找到任何元素。
为了作弊,您可以更改 ajax 请求使其异步:
statics.set('load', { async: false });
但是,在保持异步性的同时执行此操作的正确方法是使用onSuccess
回调:
statics.set('load', {
onSuccess: function() {
var toDestroy = statics.getElements('.prototype'),
numDestroy = toDestroy.length,
x;
for(x=0;x<numDestroy;x++) {
toDestroy[x].destroy();
}
}
});