- ベストアンサー
mootoolsとjQueryの共存がうまくいかない
- mootoolsとjQueryの共存がうまくいかない理由と解決策を紹介します。
- 参考サイトを見て、共存したいのですが、Operaでうまくいきません。IE、fox、safari、chromeではうまくいくのですが・・・
- $をj$などに変えてみたりいろいろ試しましたがうまくいきませんでした。お力添えよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
参考にされているサイトの記述内容の繰り返しになってしまいますが、 >jQuery.noConflict(); >var j$ = jQuery; まず、上記でコンフリクトを避けている方法の意味(処理内容)を理解する必要があります。 簡単に書けば、$をjqueryの関数からはずして(他のライブラリのために開放して)、jquery用には新しくj$(それ以外でもかまいませんが)を定義し直すことでコンフリクトを避けようとしています。 あるいは、新しく定義し直さない方法として (function($) { // $関数を用いたjQuery用のコード })(jQuery); みたいな方法もあります。 なので、それ以降に実行されるスクリプトではj$を使用していなければ正しく処理をされません。 setIntervalで実行される内容やイベント処理などのように、mootoolsを読込んだ後に実行される内容がこれに当たります。 処理が実行されるタイミングと、その時に示す$の内容が意図通りになっているかを確認してください。 ご提示のコードの書き方だと、このあたりを理解されていないように想像されます。 単なるおまじないとしてコードを書くのではなく、まずは、noConflictの意味合いを理解してください。 <参考サイトと同様のサイト> http://blog.hayazo.com/?p=57 http://stacktrace.jp/jquery/with_other_lib.html http://allabout.co.jp/gm/gc/24167/3/ <jquery documentation> http://api.jquery.com/jQuery.noConflict/ <日本語リファレンス> http://semooh.jp/jquery/api/core/jQuery.noConflict/_/ また、サブのライブラリを利用しているようですが、それらがnoConflict()を考慮して作成されているとは限りませんのでそちらにも注意が必要です。 http://d.hatena.ne.jp/masahi6/20071129/1196355971 別法として、mootools側でコンフリクトを避ける方法として「Dollar Safe Mode」というのが用意されているようなので、この方法を用いるというのもありそうです。 jqueryの場合と方法的には同じなので、mootools利用のサブのライブラリがどのような対応をしているか不明ですので、そちらも調べて対処しなければならないのは同様です。 http://sharedhat.com/blog/943/ http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/ おまけ (単なる記法についての記事ですが) http://0-9.sakura.ne.jp/blog/archives/2008/02/05232624.html http://0-9.sakura.ne.jp/blog/archives/2008/05/09083522.html
お礼
ありがとうございます! j$に定義し直したり、いろいろやりましたがやはり、Operaではうまく動きませんね・・・ サブのライブラリがnoConflict()を考慮して作成されてないのでしょうか・・・。 もう少し考えて、ダメでしたら違う方法を考えてみます。