jQueryを時間差で二度読んだ場合の挙動がおかしくなる
いや、まあそりゃそうなんですけど、起きている現象がいまいち理解不能なのでメモ。
html読み込み開始(header)
→prototypeを読み込む
→jQueryを読み込む(1.6.2)
→jQuery.noConflict();
→jQueryを使用したプラグイン(例えばアコーディオン)をクラスとして読み込む
→html読み込み完了
→別サーバからjQuery同封のコンポーネントを読み込み開始(1.7.1)
→読み込んでいる間にアコーディオンをhtmlに適応(この時点では自サーバのjQuery(1.6.2)を使用している)
→別サーバのjQueryとコンポーネント(jQuery.noConflict()済み)、読み込み完了(自サーバのjQueryは上書きされる)
→その後、htmlにもともと書かれたfunction内のjQuery(id).trigger("click");などの命令が動作しなくなる。通常のクリックではアコーディオン等の機能が問題なく動作する。jQuery.noConflict();を頭に打ってみてもダメなもよう。
jQueryの機能全部がおかしいわけじゃない。IDは取れてる。
○jQuery(id)
×jQuery(id).trigger("click");
もちろんprototype使ってて、しかもjQuery二重読みなんかしたらなんかバグるだろw
というのはごもっともなんだけど…jQueryがコンポーネントにくっついてくるとかどうしようもないわー。
回避法は自分のところではjQueryを読み込まないこと。
いつもの苦し紛れ「setTimeout」さんでアコーディオンのプラグインの読み込みを遅くして別サーバのjQueryを読み込むまで待てばOK。OKなんだけど納得いかねぇ…