如何让这两个jQuery脚本一起工作?

时间:2013-03-08 22:39:42

标签: javascript jquery audio lightbox

一个是Mp3s的音频播放器,另一个是Lightbox,我正试图在其中显示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>

2 个答案:

答案 0 :(得分:5)

MooTools和jQuery都使用$变量,这意味着你不能同时使用它们。 2解决方案:

  1. 搜索这两个功能的jQuery / MooTools实现,我相信你会找到它们。
  2. 使用jQuery.noConflict让MooTools使用$变量。
  3. 使用jQuery变量代替$,并在 jQuery之后添加MooTools 。如果要使用jQuery的$快捷方式,请将jQuery代码包装在domready事件中,并将$作为回调参数:

    jQuery(function($) {
        // ... jQuery code ($ has a copy of `jQuery` now)
    });
    // ... MooTools code ($ has a reference to the `MooTools.id` method now)
    

答案 1 :(得分:1)

您可以在自动执行函数中隔离您的jQuery代码,并将jQuery对象作为参数传递。所以$表示范围内的jQuery,但在外面它可能是其他东西。

(function ($) {

    // your jQuery code here

}(jQuery));

通常也传递对象窗口以避免解析全局范围,并接收窗口和未定义。由于您只传递了2个参数,因此第3个必须是未定义的,这样可以提高代码的可压缩性并使其更稳定(遗憾的是,未定义可以重新定义)

(function ($, window, undefined) {

    // your jQuery code here

}(jQuery, window));