0

一个是用于 Mp3 的音频播放器,另一个是我试图在其中显示 YouTube 视频的 Lightbox。

这是头部:

<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. 用于jQuery.noConflict让 MooTools 使用该$变量。
  3. 在jQuery之后使用jQuery变量代替$并包含 MooTools 。如果您想使用 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));

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

(function ($, window, undefined) {

    // your jQuery code here

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