2012-01-28 4 views
0

自分のページのタイトルイメージに基本的なフェードインJavaScript関数を使用しています。そのページでjQueryの垂直アコーディオンメニューを使用しようとすると、タイトルがロードされています。私はすべてのjavascriptコード(アコーデオン用に使用されているファイル)を見てきましたが、私は衝突する機能を理解しました。次の関数は、スクリプトの中で、私の基本的なフェードインです:ここではJavascriptのコンフリクト(フェードインVS. jQueryアコーディオン)

<script type="text/javascript"> 
    $('html').addClass('js_on'); 

    $(window).load(function(){ 
     $('#slideshow').fadeIn(2000); 
    }); 
</script> 

文が競合しない葛藤(「が」数行のコードであることは、その前にすべてのですが、私は単に「もし」ステートメントが含まれています。あなたは)完全な機能を持っている:私はこの1つに私の脳を障るんだ

function $(element) { 
    if (arguments.length > 1) { 
    for (var i = 0, elements = [], length = arguments.length; i < length; i++) 
    elements.push($(arguments[i])); 
    return elements; 
    } 
    if (typeof element == 'string') 
    element = document.getElementById(element); 
    return Element.extend(element); 
} 

。誰もが考えている?

+0

'関数$(要素){'とは何ですか?有効に見えません。 –

+0

これは基本的には、垂直方向のネストされたアコーディオンメニューの一部を制御するこの巨大なJSファイルの一部です。私がそれを取り出すと、タイトルがフェードインしますが、アコーディオンは機能しなくなり、何千ものコード行によって、それらの行に正確に絞り込んでいます。 – MillerMedia

+0

'function $(element){'は '$'という名前の関数を作成するので、定義されているスコープ内でjqueryをオーバーライドします。 –

答えて

1

jQueryには、アクセスする方法として、jQuery()$()という2つの方法があります。それらは同等です。

お客様のアコーデオンコードは$()関数を上書きしていますので、ちょうどjQuery()となります。

だから、あなたが持っている一つの選択肢は、単純に長い構文を使用することです:

<script type="text/javascript"> 
jQuery('html').addClass('js_on'); 

jQuery(window).load(function(){ 
    jQuery('#slideshow').fadeIn(2000); 
}); 
</script> 

別のオプションが閉鎖へjQueryを通過した後、内部の速記$構文を使用することです:

<script type="text/javascript"> 
// Self-executing function that calls itself immediately 
(function($){  
    // Inside this function, '$' now refers to the argument that was passed in, which is jQuery 
    $('html').addClass('js_on'); 

    $(window).load(function(){ 
     $('#slideshow').fadeIn(2000); 
    }); 
}(jQuery)); 
</script> 

そして、もう1つの選択肢は、jQuery UIライブラリ(http://jqueryui.com/demos/accordion/)のアコーディオンを使用することです。これにより、最初に競合する問題のすべてを回避できます。

関連する問題