0

我得到了 2 个名为“scripts1”的 JS 文件,其中包含幻灯片的脚本和“活动链接类”以及另一个包含“Mootools 画廊”脚本的“script2”。 第一个问题是使用“script1”中的“jQuery.noConflict()”
解决的 jquery 和 Mootools 库之间的冲突。 但在那之后,“活动链接类”的脚本停止工作,如果我从“script1”中删除“jQuery.noConflict()”效果很好[但是 Mootools 库将无法工作]。 我只是猜测 $ 符号之类的东西一定有一些逻辑问题。如果是这样,请PLZ解释背后的逻辑。 顺便说一句,我什至经历了以下解决方案,但没有结果!



  1. Jquery 和 Mootools,.noConflict 失败
  2. Jquery-Mootools 冲突
  3. http://www.phil-taylor.com/2007/01/31/using-mootools-and-jquery-without-conflict/#.USjun6XI2ky

无论如何,我会把代码放在下面,只是希望你能告诉我我哪里出错了。
文件“script1.js”包含以下代码:

jQuery(document).ready(function ()      // the slideshow function
{
     jQuery('#SlidesUl').fadeSlideShow();
});

$(function ()                           // the active link codes
{
    var url = window.location.pathname,
    urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");  
    $('#Menu div span #Menu1st a').each(function () 
    {
       if (urlRegExp.test(this.href.replace(/\/$/, '')))
       {
        $(this).addClass('active1st');
       }
    });
});

jQuery.noConflict();

(function($)                           // the slideshow options and all
{
the codes
})(jQuery);                                                                    

并且文件“script2.js”包含这些:

jQuery(document).ready(function ($)    // the Mootools gallery codes
{
    the codes
});                                                             

这是我放置库和文件的方式:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script src="js/script1.js" type="text/javascript"></script>
<script src=" MooTools 1.4.4 " type="text/javascript"></script>
<script src="js/script2.js" type="text/javascript"></script>                       

任何帮助或解释将不胜感激:)

4

2 回答 2

1

您的代码在the active link class您调用后jQuery.noConflict();执行(它在文档加载时执行),因此您不能再使用$引用 jQuery,但您可以。纠正此更改$jQuery设置$为就绪函数的参数,该函数实际上是 jQuery 对象。

1.

$(function ()                           // the active link codes
{
    var url = window.location.pathname,
    urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");  
    jQuery('#Menu div span #Menu1st a').each(function () 
    {
       if (urlRegExp.test(this.href.replace(/\/$/, '')))
       {
        jQuery(this).addClass('active1st');
       }
    });
});

2.

$(function ($)                           // the active link codes
{
    var url = window.location.pathname,
    urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");  
    $('#Menu div span #Menu1st a').each(function () 
    {
       if (urlRegExp.test(this.href.replace(/\/$/, '')))
       {
        $(this).addClass('active1st');
       }
    });
});
于 2013-02-23T19:16:50.040 回答
0

调用后您的 jQuery 不起作用的原因$.noConflict()是因为将使jQuery 中默认使用$.noConflict()的符号无效。$

我建议将您的代码包装在匿名函数中。

// Null the $ symbol used by jQuery.
$.noConflict();

// anonymous function.
(function($) {
    $(function() {
       alert('DOM ready!'); 
    });
})(jQuery);

http://jsfiddle.net/3v4CB/

编辑

尝试这个:

// script1.js
(function($) {

    $(function ()  
    {
        $('#SlidesUl').fadeSlideShow(); // the slideshow function

        // the active link codes
        var url = window.location.pathname,
        urlRegExp = new RegExp(url.replace(/\/$/, '') + "$");  
        $('#Menu div span #Menu1st a').each(function () 
            {
                if (urlRegExp.test(this.href.replace(/\/$/, '')))
            {
                $(this).addClass('active1st');
            }
        });

        // The codes
    });

})(jQuery);

// script2.js
(function($) {

    $(function ()  
    {
        // the Mootools gallery codes
    });

})(jQuery);
于 2013-02-23T19:18:01.647 回答