0

スライドショーのスクリプトを含む「scripts1」と「アクティブリンククラス」を含む2つのJSファイルと、「Mootoolsgallery」のスクリプトを含むもう1つの「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();されます(ドキュメントの読み込み時に実行されます)。したがって、yoouは$jQueryを参照するために使用できなくなりますが、実行します。この変更を修正する$か、実際にはjQueryオブジェクトであるready関数の引数としてjQuery設定します。$

1.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.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が機能しない理由は、jQueryでデフォルトで使用されているシンボルが無効になる$.noConflict()ためです。$.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 に答える