プロが教えるわが家の防犯対策術!

2つのHTMLがあり、両方ともjQueryプラグインを使っています。
今回、a.html側に、jQuery loadで、b.htmlを読込みました。

■a.html
jQuery 本体
jQueryUI
jQueryForm
jQuery.HashChanged
など基本js(多数)

■b.html
jQuery.Gallerific
jQuery.Fancybox
jQuery.fixPing
などメディア系統js(多数)

■困っていること
両方とも、$(function(){ ... }) 構文を使って、DOMの展開完了を待っているのですが、「読込まれる側=b,html」の、$(function(){ ... }) がうまく働いていないようなのです。
b.html 単体では何の問題もないのですが、a.htmlにloadされると、遅延読み込みがききません。

元である a.html で全部のjQuery プラグインを読むのは重すぎるため、各々で必要なプラグインを都度、読むようにしたいのですが、その場合、読み込まれる側の実行遅延(DOM展待ち)はどのようにしたらいいでしょうか?

A 回答 (1件)

b.htmlはajaxを用いてスクリプトで読み込んでいるため、ドキュメントレディのようなイベントは発生しません。


タイミングを調整するにはloadのコールバック関数を利用してあげる必要があります。

一方で、もともと別々の文書だったものをまとめてしまうので、仮にスクリプトを実行できても、記述方法によっては問題がでそうな気がします。
ご質問文から推測するに、失礼ながらそちらの方がさらに面倒そうに思えます。
簡単な方法として考えられるのは、ajaxを利用せず、別文書としてiframeなどを利用して表示するようにすれば、問題なく動作すると思いますが?


>全部のjQuery プラグインを読むのは重すぎるため
ご希望の内容は、結局のところ、そういうことを意味していませんか?
表示されるまでの待ち時間について「重い」とおっしゃっているのであれば、スクリプトを後から読み込むように制御するとか…
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど。。$.load()では、ドキュメント・レディが使えないのですね。
何かそんな感じがしました。
読み込んだプラグインの展開より前に、それを使うJavascriptが走っているようです。
読込み元で先にプラグインを読んでおけばOKなのですが、特定のページでしかつかわないプラグインを全部のページで読むのに抵抗があります。

で、iframeなのですが、すでにデザインやアーキテクチャが決まってしまっていて、変更できません。
またこれ以外に、fancyboxで読み込むページもあります。

おっしゃる通り、読み込まれる側のJavascriptの起動をコールバックからにしてやってみます。
ありがとうございました。

お礼日時:2013/02/02 00:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!