2012-03-12 23 views
7

私のページには2つの関数があります。私は、関数2の内部機能1で変数にアクセスする方法を見つけようとしています:Jquery - 別の関数から変数を取得する

$(function() { 
    $('a[id=1]').live("click", function(event) { 
     event.preventDefault(); 
     var Var1 = "something1"; 
     }); 
}); 

$(function() { 
    $('a[id=2]').live("click", function(event) { 
     event.preventDefault(); 
     var Var2 = event.var1; 
     }); 
}); 

だから私は私の上記が間違っていると確信していますが、機能2に、私はから変数をつかむしようとしていますどのように見ることができます最初の機能。

これを行う方法はありますか?理由はわかりませんが、event.var1やイベント機能と関係があると考え続けています。

+1

2回目のクリックのイベントは、1回目のクリックイベントとは関係ありません。 – epascarello

+0

これを確認するには、1回のクリックで変数を設定し、2回目のクリックでそれを使用しますか? –

答えて

12

両方の関数の外部にある変数を、両方がアクセスできるスコープ内で宣言する必要があります。

$(function() { 
    var var1; // may want to assign a default 

    $('a[id=1]').live("click", function(event) { 
     event.preventDefault(); 
     var1 = "something1"; 
     }); 

    $('a[id=2]').live("click", function(event) { 
     event.preventDefault(); 
     var var2 = var1; 
     }); 
}); 

それとも、あまりにも他の場所からアクセスする必要がある場合は、変数はグローバルにすることができます:私は、単一の関数にあなたの2つの文書準備ハンドラを組み合わせ、そこに変数を宣言示唆しています。

クリックイベントは、互いに関係がないため、イベントデータを共有していないことに注意してください。また、2番目のアンカーのクリックは、最初のクリックをクリックする前に発生する可能性があります。したがって、var1にデフォルト値を指定したり、2番目のクリックハンドラー内でundefined beforをテストすることができます。

(JS規則は、小文字で変数名を開始することですので、また、私はvar1からVar1を変更しました - あなたは規則に従う必要はありませんが、私はそれをお勧めします。)

2

各イベントは、ウィンドウオブジェクトのグローバル変数にあなたの結果を格納し、イベントの順序の世話をすることができ、各クリックからユニークになりますされている

$(function() { 
$('a[id=1]').live("click", function(event) { 
    event.preventDefault(); 
    window.Var1 = "something1"; 
    }); 

});

$(function() { 
$('a[id=2]').live("click", function(event) { 
    event.preventDefault(); 
    var Var2 = window.Var1; 
    }); 

});

関連する問題