如何在jQuery中存储全局值(不一定是全局variables)?

目前,我正在使用一大堆JavaScript,jQuery,Microsoft客户端JavaScript和其他库的遗留网页上工作。 底线 – 我不能从头开始重写整个页面,因为业务无法certificate它的正确性。 所以……就是这样。 无论如何,我需要污染(我真的没有试过)全局命名空间与variables。 有三个选项我正在考虑 –

  1. 只需使用正常的JavaScript声明来存储/检索它 – var x = 0;

  2. 使用jQuery存储/检索DOM标签中的值 – $("body").data("x", 0);

  3. 使用隐藏的表单字段,并设置/检索值与jQuery – $("whatever").data("x", 0);

有没有更好的办法? 我看着现有的一堆代码,我不相信variables可以在一个函数中作用域。

你可以在jQuery对象内创build一个名称空间,如下所示:

 $.mynamespace = { myVar : "something", myVar2 : "somethingElse" }; 

要么:

 $.mynamespace = {}; $.mynamespace.myVar = "something"; $.mynamespace.myVar2 = "somethingElse"; 

请记住,任何名为“mynamespace”的插件方法都将被覆盖,因此请务必使用明智的名称。

对我来说,处理这种情况的最好方法是在窗口对象中定义一个对象:

 window.my_config = { my_var1 : 1, my_var1 : 2, my_var1 : 3 }; 

这将保持你的范围整齐干净。 而且,只要你使用window.my_config来访问全局,任何查看代码的人都会知道全局正在被访问。

您可以在全局范围中创build一个散列,并将其用作名称空间:

 MyNamepace={} MyNamespace.newvar = 'value' // MyNamespace.newvar => 'value' 

只是与你分享我的做法,我会在所需的JavaScript文件中创build一个全局对象/ var,其中包含一个合理的前缀,如果我正在处理一个页面,该对象将是一个文本框,那么我将其命名为:

 g_TxtMyValue = 'value'; // g_ specifies it to be a global variable, it is one // of the many conventions used 

如果你有多个全局variables,你也可以有一个名字空间,例如:

 my_txt = {}; // For a real site I would use a prefix relative to the project // name instead of "my". my_txt.testValueOne = 'Value one'; my_txt.testValueOne = 'Value two'; 

这些variables在初始化后将在整个网站上提供给您。

我希望这有帮助。

只是一个简短的通知:是fancybox是AJAX(意思是它在一个iFrame中加载,你应该添加“父”的closures方法,像这样: js parent.$.fancybox.close();

使用下划线isEmpty()

_.isEmpty('')将返回true