2011-08-15 52 views
3

我正在使用jQuery 1.6.2和ColdFusion 9.我可以設置全局變量並在其他文檔就緒事件中使用它們嗎?

當請求頁面時,包含許多文件。幾個文件包含jQuery文檔就緒方法。我想設置一些我可以在整個頁面中使用的全局變量。例如,我想爲我的幻燈片使用這些變量:

SlideUpRate = 400; 
SlideDownRate = SlideUpRate * 2; 

看起來這個工作不一致。有沒有辦法讓它一直工作?

++++++++++++++++++++++++++++++++++++++++++++++ + 回答

在index.cfm文件中,我設置了全局變量,可以在整個呈現的頁面中使用和重用其他jQuery。

<script type="text/javascript"> 
var SlideUpRate = 250; 
var SlideDownRate = SlideUpRate * 2; 
var HideRate = 250; 
var ShowRate = HideRate * 2; 
var ImageUnsaved = "layout/checkbox_unsaved.png"; 
var ImageSaved = "layout/checkbox_saved.png"; 
$(document).ready(function() { 

    // other jQuery stuff 

}); 

+0

」看起來這個工作不一致。「真?怎麼會這樣? –

回答

20

是的,你可以將它們添加到全局命名空間:

var globalVar1; 
$(document).ready(function(){ 
    globalVar1 = "something"; 
}); 
$(document).ready(function(){ 
    alert(globalVar1); 
}); 

http://jsfiddle.net/QDPAm/

如果你不想污染與多重變量在全球範圍內,你可以使對象包含這些變量:

var vars = {}; 

然後在您的ready函數中添加變量到vars對象。

$(document).ready(function(){ 
    vars.my_variable_1 = "something"; 
}); 

而另一ready功能:

$(document).ready(function(){ 
    alert(vars.my_variable_1); 
}); 

http://jsfiddle.net/aalouv/QDPAm/1/

我不能看到爲什麼你的例子不應該工作。也許是因爲你正在嘗試訪問一些變量之前,它們被設置?

var vars = {}; 
$(document).ready(function(){ 
    alert(vars.my_variable_1); // undefined 
}); 

$(document).ready(function(){ 
    vars.my_variable_1 = "something"; 
}); 

http://jsfiddle.net/aalouv/QDPAm/3/

沒有VAR指標還創建變量首先將變量添加到全球範圍內,所以,你可以訪問變量:window或只是沒有任何名稱空間之前。

$(document).ready(function(){ 
    my_variable_1 = "something"; 
}); 
$(document).ready(function(){ 
    alert(window.my_variable_1); 
    alert(my_variable_1); 
}); 

http://jsfiddle.net/aalouv/QDPAm/2/

+0

謝謝!你的例子和解釋非常明確和有幫助。對此,我真的非常感激。 –

1

Evik,

我會用文字目的是您存儲像這樣的局部變量:當你要訪問這些頁面級別性質在

var pageProperties = { 
    slideUpRate: 250, 
    hideRate: 250, 
    imageUnsaved: "layout/checkbox_unsaved.png", 
    imageSaved: "layout/checkbox_saved.png", 

    getSlideDownRate: function() { 
     return slideUpRate * 2; 
    }, 

    showRate : function() { 
     return hideRate * 2; 
    } 
    }; 

現在你會使用對象文字:

pageProperties.slideUpRate; 
pageProperties.getSlideDownRate(); 

將計算出的費率放入函數中可以獲得的一個好處是您可以封裝功能並使這些功能更易於維護和便攜。

我會做的另一件事是通過使用更多的對象文字清理多個$(document).ready函數,如Rebecca Murphey在這篇博客文章中所討論的:http://blog.rebeccamurphey.com/2009/10/15/using-objects-to-organize-your-code。 「

相關問題