任何人都可以帮助我吗? - >
我不会定义vQuery id,zIndex,jQuery.each之后的函数宽度 它们的值将是传递给函数MyFunction的数组的值:
console.log(id); //ID IS NOT DEFINED
console.log(zIndex); //NOT DEFINED
console.log(width); //NOT DEFINED
非常感谢你的帮助,彼得
代码和GT;
var MyArray = new Object();
MyArray.id = "3";
MyArray.zIndex = "3";
MyArray.width = "600";
function MyFunction(my_array) {
console.log(my_array.id); //IT IS OK, id is defined
jQuery.each(my_array, function(key,value) {
alert(key + " = " + value);
eval("var" + key + " = " + value); //???????
});
console.log(id); //ID IS NOT DEFINED
console.log(zIndex); //NOT DEFINED
console.log(width); //NOT DEFINED
}
MyFunction(MyArray);
-----更新----------------------
感谢所有人的回答 在这个时候我更新了我的代码, 我想为我的申请创建小插件 方法OPENWINDOW是PUBLIC
我的问题是如何使用方法
jQuery.each(my_array, function(key,value) {
window[key]=value;
});
IN PLUGIN PUBLIC METHOD OPENWINDOW
这里的代码更复杂:
(function($){
$.fn.MyPlugin = function(options) {
...... CODE
this.OpenWindow = function(my_array) {
//this way dont work for me here, vars are not defined
var window = $(window);
jQuery.each(my_array, function(key,value) {
window[key]=value;
});
//VARS ARE NOT DEFINED
console.log(id);
console.log(zIndex);
console.log(width);
//this way work well
for (var k in my_array){
eval ("var " + k + " = " + my_array[k]);
}
//VARS ARE DEFINED
console.log(id);
console.log(zIndex);
console.log(width);
.... code
return this;
};
})(jQuery);
var MyArray = new Object();
MyArray.id = "3";
MyArray.zIndex = "3";
MyArray.width = "600";
var MyPlugin = $.fn.MyPlugin();
MyPlugin.OpenWindow(MyArray);
答案 0 :(得分:1)
试试这个:
$.each(my_array,function(i,n){
window[i]=n;
})
请参阅小提琴here。
你的方式不起作用,因为eval
代码仍然在jQuery的每个循环中运行,所以
变量将在区域外定义。
答案 1 :(得分:0)
而不是......
eval("var" + key + " = " + value);
使用
window[key] = value;
但是后来id,zIndex和width将成为全局变量。因此,如果您不想发生任何冲突,则必须删除它们。
答案 2 :(得分:0)
而不是在jquery.each中执行它,直接迭代使用for循环传递的对象并使用eval。
var MyArray = new Object();
MyArray.id = "3";
MyArray.zIndex = "3";
MyArray.width = "600";
function MyFunction(my_array) {
for (var k in my_array){
eval ("var " + k + " = " + my_array[k]);
}
console.log(id);
console.log(zIndex);
console.log(width);
}
MyFunction(MyArray);