0

1 つは Mp3 用のオーディオ プレーヤーで、もう 1 つは YouTube の動画を表示しようとしているライトボックスです。

ここに頭があります:

<script type="text/javascript" src="videobox/js/mootools.js"></script>
<script type="text/javascript" src="videobox/js/swfobject.js"></script>
<script type="text/javascript" src="videobox/js/videobox.js"></script>
<link rel="stylesheet" href="videobox/css/videobox.css" type="text/css" media="screen" />

<link rel="stylesheet" href="libs/css/styles.css" />
<script src="libs/jquery/jquery.js"></script>
<script src="src/jquery.ubaplayer.js"></script>
<script>
   $(function(){
            $("#ubaPlayer").ubaPlayer({
            codecs: [{name:"MP3", codec: 'audio/mpeg;'}]
            });
        });
</script>

「libs/jquery/jquery.js」を削除するとライトボックスが機能することに気付きましたが、オーディオ プレーヤーが機能しなくなります。

私は Javascript/JQuery に関してはあまり熟練していないので、答えは明らかかもしれません。

アップデート:

これで問題は解決しました!

<script type="text/javascript" src="videobox/js/mootools.js"></script>
<script type="text/javascript" src="videobox/js/swfobject.js"></script>
<script type="text/javascript" src="videobox/js/videobox.js"></script>
<link rel="stylesheet" href="videobox/css/videobox.css" type="text/css" media="screen" />

<link rel="stylesheet" href="libs/css/styles.css" />
<script src="libs/jquery/jquery.js"></script>
<script src="src/jquery.ubaplayer.js"></script>
<script>
   jQuery.noConflict();
   jQuery(function(){
            jQuery("#ubaPlayer").ubaPlayer({
            codecs: [{name:"MP3", codec: 'audio/mpeg;'}]
            });
        });
</script>
4

2 に答える 2

5

MooTools と jQuery の両方が$変数を使用します。つまり、両方を使用することはできません。2 つの解決策:

  1. 両方の機能の jQuery/MooTools 実装を検索してください。きっと見つかるはずです。
  2. MooTools に変数を使用jQuery.noConflictさせるために使用し$ます。
  3. jQueryjQueryの代わりに変数を使用し$、MooToolsjQuery の後に含めます。jQueryのショートカットを使用する場合は$、jQuery コードを$コールバックの as パラメータを使用して domready イベントにラップします。

    jQuery(function($) {
        // ... jQuery code ($ has a copy of `jQuery` now)
    });
    // ... MooTools code ($ has a reference to the `MooTools.id` method now)
    
于 2013-03-08T22:42:06.433 に答える
1

jQuery オブジェクトを引数として渡す自動実行関数内で jQuery コードを分離できます。したがって、$ はスコープ jQuery の内側を意味しますが、外側は別のものになる可能性があります。

(function ($) {

    // your jQuery code here

}(jQuery));

グローバル スコープの解決を避けるためにオブジェクト ウィンドウも渡し、window と undefined を受け取ることは非常に一般的です。2 つの引数しか渡さないため、3 番目は未定義にする必要があります。これにより、コードの圧縮性が向上し、より安定します (未定義は残念ながら再定義できます)。

(function ($, window, undefined) {

    // your jQuery code here

}(jQuery, window));
于 2013-03-08T22:47:09.253 に答える