2010-11-28 9 views
0

これは多くの人にとっては簡単な質問です。jQueryの2つの関数間で変数を渡す際の助けが必要

背景: jQueryライブラリを使用して、javascriptで2つの関数間で変数を渡すことが困難です。

以下は、workSnippetのインデックスに基づいてコンテンツを動的に読み込むスクリプトです。一番上の関数が機能します。 2番目の関数は機能しません。 portfolioCount変数が存在しないように見えるので、アラートは表示されません。

私の質問:2つの関数の間で変数を渡すと、「次へ」をクリックしたときにportfolioCountを警告できますか?

おかげ

// set global variable 
var portfolioCount = 0; 

// begin on document ready 
     $(document).ready(function() { 
// Return the value of the index of workSnippet when clicked and load related content 

$(".workSnippet").click(function() { 

    //set variable portfolioCount based on index 

    var portfolioCount = $(".workSnippet").index(this); 

    //load content based on portfolioCount 

    $('#work #cycle' + portfolioCount).load("ajax-content/ajax-content.php #portfolioImage" + portfolioCount); 

    // when loaded, run animation functions 

    $("#work").ajaxComplete(function(){ 

     setTimeout(invokeMultipleCycle, 200); 

     showWork(); 
     $('#work').cycle(portfolioCount); 
     $('#blurbs').cycle(portfolioCount); 

     return portfolioCount; 
    }); 

}); 

// return cycle value when 'next' is clicked 

$('#next').click(function() { 

    alert(portfolioCount); 
}); 

}); 
+0

場合 '警告(portfolioCount) 'クリックハンドラで割り当てた直後に、どの番号が通知されますか?あなたの問題はそこにあるかもしれませんが、あなたの変数スコープではありません。 – strager

+0

(ここでは、グローバル変数は決して参照されません。JavaScript閉鎖ルールについて理解していますか?) – strager

+0

Nevermind;私はコードを誤解した。 '$( '#next').Click'コールバックを明らかにするためにコードがスクロールされているのに気付かなかった。 – strager

答えて

2

機能の外に、このようにグローバルを宣言します。

var portfolioCount=0; 

次に、このラインから 'VAR' キーワードを削除:

var portfolioCount = $(".workSnippet").index(this); 

/SIM

+0

これは問題でした、私はこれを知らなかった!ありがとう。 – CarbonDry

0

グローバル変数として宣言portfolioCount
また

$('#next').click(function() { 
     var item = $(".workSnippet"); 
     var portfolioCount=$(".workSnippet").index(item); 
     alert(portfolioCount); 
    }); 
+0

私はvar portfolioCount = 0;と入力して、portfolioCountをグローバルとして宣言しようとしました。すべての機能が実行される前にスクリプトの先頭に表示されますが、アラートには常に「0」が表示されます(次回のクリック時)。私はあなたの選択肢を試しましたが、インデックスではクリックではなく、要素をキャッチするので動作しません。 – CarbonDry

0

あなたが二回portfolioCountを宣言している変数

0

グローバルJavaScriptでそれを保存することができます。 $( '。worksnippet')の中のportfolioCount click()コールバックは、前記コールバックのスコープ内の全く異なる変数です。クリックコールバックのportfolioCountの割り当て内から 'var'キーワードを削除して、グローバル変数を使用するようにしてください。

+0

これは修正されました、ありがとう – CarbonDry

関連する問題