私は単に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非同期になること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();
}
}
});