我可以设置全局变量并在其他文档就绪事件中使用它们吗?

时间:2011-08-15 14:07:12

标签: jquery coldfusion

我正在使用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

});

2 个答案:

答案 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/

答案 1 :(得分: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