如何在jQuery中存储全局值(不一定是全局variables)?
目前,我正在使用一大堆JavaScript,jQuery,Microsoft客户端JavaScript和其他库的遗留网页上工作。 底线 – 我不能从头开始重写整个页面,因为业务无法certificate它的正确性。 所以……就是这样。 无论如何,我需要污染(我真的没有试过)全局命名空间与variables。 有三个选项我正在考虑 –
-
只需使用正常的JavaScript声明来存储/检索它 –
var x = 0;
-
使用jQuery存储/检索DOM标签中的值 –
$("body").data("x", 0);
-
使用隐藏的表单字段,并设置/检索值与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
。