2012-03-12 81 views
7

我的頁面上有兩個函數。我試圖找到一種方法來訪問變量函數1內部功能2: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

第二次點擊的事件無關,與第一次點擊的事件。 – epascarello 2012-03-12 23:59:31

+0

所以要確認,您只需單擊一次即可設置變量,並在第二次點擊時使用它? – 2012-03-13 00:01:52

回答

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; 
     }); 
}); 

或者你可以把這些變量作爲全球如果你需要從其他地方訪問它。

請注意,兩個點擊事件與對方無關,所以它們當然不會共享事件數據。此外,點擊第二個定位點之前可能會點擊第一個定位點,因此您可能需要爲var1設置默認值和/或測試undefined以便在第二個點擊處理程序中使用它。

(此外,我已經改變了Var1var1因爲JS的約定是用小寫字母開頭的變量名 - 你不必遵循慣例,但我推薦它。)

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; 
    }); 

});

相關問題