サポート » プラグイン » jQueryを二種類読み込むとプラグインが動きません

  • 解決済 katagami

    (@katagami)


    jQueryのSimple ToggleまたはSimple Slide Panelをエントリ内に使おうと思い導入したところ、
    動かなかったので、別途jQuery-latest.jsを用意してmetaタグにて読ませてみるとそれぞれ動作しました。
    しかし今度はWordpressのプラグイン(Lightbox2、WP-dTree等)が動かなくなり、困っています。
    おそらくjQueryを二種類記述しているのが悪いとは思うのですが、片方を削除しようにも、Wordpressが自前で用意しているっぽい1.2.6でプラグイン以外のjQueryスクリプトが何故動かないのか分からないため、出来ません。
    Javascriptがほとんど分かっていないので馬鹿な質問かも知れませんが、どなたか解決策をご教示下さい。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • akihiro

    (@akihiro)

    Lightbox2とWP-dTreeはprototype系のajaxを使ったプラグインなのでjQueryと競合してしまいます。

    Lightboxに関してはjQuery lightbox pluginを利用すればクリアされると思いますが、WP-dTreeについてはそうはいかないですよね。

    どうしても併用させたい場合は、対処法を紹介しているサイトさんが結構ありますので「jquery prototype 競合」で検索してみてください。jQueryが用意しているjQuery.noConflict()を使ってjQuery側の変数(名称?)を変更させる方法のようです。

    ただ、私はトライしたことがないので動作の確証はできませんm(__)m

    spais

    (@spais)

    wp_enqueue_script() などは重複して呼び出しても上書きしてくれないので wp_deregister_script( ‘jquery’ ) と既存の登録を解除してから wp_enqueue_script() すればそちらが登録されるようになります。

    しかし、既存のスクリプトの中には依存関係が存在するケースがあるので十分に気をつけて下さい。
    jQuery ならば特に問題ありませんが、jQuery-UI 系は依存関係が結構多いので他のスクリプトが動かなくなるケースが多いです。
    admin-ajax.php に AJAX で POST するようなスクリプトも(l10n の都合上)依存関係が壊れやすいので気をつけてください。

    WordPress 本体に組み込まれているスクリプトの依存関係は wp-includes/script-loader.php にありますので、依存関係を気にしなければならないようなケースに参考にして下さい。

    トピック投稿者 katagami

    (@katagami)

    akihiroさん
    教えて頂いた通り、検索すると var j$ = jQuery; と書き換える方法がありましたのでそれを使い、さらにプラグインではなくhtmlへのスクリプトの直接の記述により、なんとか希望の動作を共存させることができました。
    またlightboxもWP-dTreeもてっきりjQueryだと思い込んでいましたので、大変勉強になりました。
    ありがとうございました。

    spaisさん
    今回はたまたま出来ましたが、本来はspaisさんの仰るような知識がいるのだと思います。プラグインを導入するだけの初心者から脱出したく思っていますので、教えて頂きました情報を手がかりに、頭から検索して勉強していこうと思います。
    ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「jQueryを二種類読み込むとプラグインが動きません」には新たに返信することはできません。