いつも大変お世話になっております。
WordPressでテーマを作成したのですが、
Jqueryのプラグインがコンフリクトを起こしてしまい、
幾つかのプラグインが同時に利用できない状況です。
【概要】
(A)
iscroll.js
(スマートフォンでドロワーメニューを出す)
<script type="text/javascript"> jQuery(document).ready( function( $ ) { $('.drawer').drawer(); }); </script>
と
(B)
パソコン版でスクロールするとヘッダーに固定メニューを表示させる
スクロールすると右下にトップに戻るボタンを表示する
が同時に利用できない状況です。
AとBをheadに記述すると後述のjsファイルが動かなくなる状況です。
他のプラグインを削除したりしてチェックしてみたのですが、
競合を起こしているのは上記のプラグインのみのようでした。
※
ただ、スマートフォンでみると
drawer.min.js
jquery-scrolls.js
の順で記述すればなぜかどちらも動作します。
【試したこと】
(1)
調べたところ$関数が競合をおこすとのことでしたので、
$(function() {
を
jQuery(function($)
に修正してみましたが解消しませんでした。
(2)
また、
プラグインを複数入れたらjQueryが動かない!-コンフリクト対策
を参考に
「$() 関数」の代わりに別の関数「$d」のような任意の関数を定義してみたのですが、
こうすると競合以前にプラグインが動作しなくなってしまいました。
(2)を記述した際はAとBを下記のように修正しました。
<script type="text/javascript"> var $d = jQuery.noConflict(); $d(document).ready( function() { $d('.drawer').drawer(); }); </script>
var $f = jQuery.noConflict(); $f(function() { var nav = $f('.nav'); var navTop = nav.offset().top+500; var navHeight = nav.height()+10; var showFlug = false; nav.css('top', -navHeight+'px'); $(window).scroll(function () { var winTop = $(this).scrollTop(); if (winTop >= navTop) { if (showFlug == false) { showFlug = true; nav .addClass('fixed') .stop().animate({'top' : '0px'}, 200); } } else if (winTop <= navTop) { if (showFlug) { showFlug = false; nav.stop().animate({'top' : -navHeight+'px'}, 200, function(){ nav.removeClass('fixed'); }); } } }); });
var $s = jQuery.noConflict(); $s(function() { var topBtn = $s('#page-top'); topBtn.hide(); //スクロールが100に達したらボタン表示 $s(window).scroll(function () { if ($(this).scrollTop() > 100) { topBtn.fadeIn(); } else { topBtn.fadeOut(); } }); //スクロールしてトップ topBtn.click(function () { $s('body,html').animate({ scrollTop: 0 }, 500); return false; }); });
【その他】
他に下記のプラグインを導入していますが、
こちらは動作しております。
bxslider(スライダープラグイン)
jquery.matchHeight(ボックスの高さを揃えるプラグイン)
dropdown(ドロップダウンメニューを呼び出すプラグイン)
ofi.min(IEでcss object-fitを適用させるプラグイン)
AとBを競合を起こさずに、同時に利用する方法はありませんでしょうか?
お忙しいところお手数をおかけしますが、
どうぞご指導よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー