私は Ajax のことは少し初めてなので、これら 2 つの方法のどちらが最も効率的かを皆さんが提案できることを願っています。どちらのアプローチも機能しているように見えますが、全体としてもっと良い方法があるのではないでしょうか?
thisPage.html は、リンクのクリックに応答して、(同じホスト上の) thatPage.html から引き出された html のブロブを表示したいと考えています。私は Shadowbox の html プレーヤーを使用して blob を表示し、jQuery の get() を XMLHttpRequest へのショートカットとして使用しています。
私の最初のソリューションでは、thisPage.js に次の関数が含まれています。
function loadEntry(entry){
jQuery.get('thatPage.html', function(data){
var elem = document.createElement("div");
elem.innerHTML = "<div class='entry-to-show'>" + jQuery(data).find("a[name='" + entry + "']").parent().parent().html() + "</div>";
Shadowbox.open({
options: {
enableKeys: false
},
player: 'html',
content: elem.innerHTML
});
});
};
しかし、その後、loadEntry が呼び出されるたびに thisPage が thatPage をロードするのではなく、thisPage.js がロードされたときに一度呼び出し、jQuery オブジェクトを含む変数としてラップし、次のようにアクセスすることを考えました。
var $Content = null;
jQuery.get('thatPage.html', function(data){
$Content = jQuery(data).find("#content");
});
function loadEntry(entry){
elem = $Content.find("a[name='" + entry + "']").parent().parent().html();
Shadowbox.open({
options: {
enableKeys: false
},
player: 'html',
content: elem
});
};
この2番目の方法は実際にはより効率的ですか、それとも私がやろうとしていることにより適切な他のアプローチがありますか? アドバイスや一般的な観察は大歓迎です。
ありがとう、ジョン