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非同期になることXMLHttpRequestです。

.load()呼び出されるとXMLHttpRequesttostatics.htmlが作成されますが、HTML ペイロードを返す前にスクリプトの実行が続行され、現在空の である.getElements('.prototype')に対して実行されるため、要素は見つかりません。staticsdiv

ごまかすには、非同期になるように 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 に答える