0

私はいくつかのjquery機能を使用するサイトを持っています。ホームページでは Nivo Slider プラグインを使用し、別のページでは Lightbox 効果を使用しました。

ファイル内のスクリプトへのリンクの配置では、header.phpNivo Slider リンクの下にライトボックス リンクがあります。ライトボックスは機能しますが、Nivo スライダーは機能しません。再配置すると、スライダーは機能しますが、ライトボックスは機能しません。

この状況では、LightBox は機能しますが、スライダーは機能しません

<script type="text/javascript" src="js/jquery.nivo.slider.js"></script>

<script src="js/prototype.js" type="text/javascript"></script>      
<script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script>
<script src="js/lightbox.js" type="text/javascript"></script>

これは正常ですか?両方を同時に機能させるにはどうすればよいですか。

スライダーのあるホームページはこちら

ライトボックスのあるページはこちら

ありがとうございました。

4

2 に答える 2

1

多くの場所からの多くのコードがあると、いくつかのことが機能しなくなります。個別に機能するコードを少し追加しても、統合すると機能すると単純に想定することはできません。この特定のケースでは、jQuery と Prototype が競合しています。

これは、上部に jQuery を 1 つだけロードし、次の小さなスニペットを含めることで修正できます。

jQuery.noConflict();

$その後、jQuery は変数を引き継がなくなります。(あなたのコードも、jQueryではなくを使用してこの変更を説明する必要があります$が、適切に作成されたすべてのプラグインは、この変更と適切に相互運用する必要があります。)

その後、プロトタイプと他のプラグインを含めることができるはずです。とにかく、理論的には。


実際には、Prototype は他のいくつかのものをフックします。あなたの特定のケースでは、jQuery プラグインが予期しない方法でフックArray.​prototype.​reverseしており、どういうわけか、スタック オーバーフローを引き起こしています。Prototype によるその関数の乗っ取りを、いずれかを壊さずに解決する方法がよくわからないので、jQuery だけで動作するライトボックス プラグインを見つけてください。

于 2013-02-10T00:36:31.220 に答える
0

jQuery を呼び出そうとしても、jQuery は使用できません。すべてを体の底に移動してみてください。また、jQuery を 2 回ロードしていることにも注意してください。

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.min.js"></script>
于 2013-02-09T23:40:47.453 に答える