2011-11-09 86 views
0

我想獲得一個變量(當鏈接被點擊時設置)到一個函數並顯示爲彈出。如何獲得一個變量到一個函數?

如下所示的代碼:

$('a#link1').click(function(e){ 
e.preventDefault(); 
    var value = 'true'; 
}); 


function exe(){ 
    alert(value); 
} 

在執行功能時,所有我得到的是值爲undentified。

那麼,任何人都知道解決它的方法?

+0

var value; $('#link1')... {value = true; } - 如果您使用的是ID選擇器,則不需要指定元素名稱 – Irishka

回答

4

變量具有範圍,您可以在onclick關閉範圍內定義value變量,並且不會在其外部訪問變量。

下面將工作:

var value = false; //Define in the global scope 

$('a#link1').click(function(e){ 
e.preventDefault(); 
    value = false; //Use in a local-scope is legal. 
}); 

function doSomething() 
{ 
alert(value); 
} 

然而有許多全局變量會讓你的項目難以維持,而且還有其他的更清潔的解決方案。一般我會建議你閱讀編程合適的書雖然:)

+0

是的。發佈的其他解決方案並不是最佳選擇,因爲您可以在不點擊的情況下運行該功能並使其失敗。在這裏它被設置爲默認值,所以它不會失敗,即使它在點擊之外運行:) –

+0

感謝TJHeuvel,它工作。 – sm21guy

+1

沒問題,它很好,我可以幫你。但是,如果你認真對待網絡開發,我強烈建議你通過購買適當的書繼續學習。變量範圍對編程至關重要,並且可能是一個難以理解的概念(特別是在那種叫做javascript的奇妙語言中)。 – TJHeuvel

0

只是使變量全球性的,或者更好的使用.data()「附加」它的元素:

$('a#link1').click(function(e) { 
e.preventDefault(); 
    $(this).data("value", "true"); 
}); 

然後你可隨時查詢此:

function exe() { 
    alert($('a#link1').data("value")); 
} 

注意,它是在jQuery的1.2.3加猜測,現在它並不真正的問題雖然。

+0

好的提示,謝謝你的幫助。 – sm21guy

相關問題