2011-08-15 49 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。 “

相关问题