0

我只是想将 html 导入一个新节点,并用类“.prototype”去除元素:

var statics = new Element('div');

statics.load('statics.html')

statics.getElements('.prototype').destroy();

statics.inject($('main'));

这不能按预期工作。具有“.prototype”类的元素仍然存在。有什么见解吗?

4

1 回答 1

2

如果那是未更改的代码,那么该摘录的问题在于Request.HTML使 asynchronous XMLHttpRequest.

.load()被调用时,它会生成一个XMLHttpRequestto 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();
        }
    }
});
于 2013-03-20T23:57:28.427 回答