将函数分配给 JavaScript 对象时出现问题
Having Issue on Assigning Functions to JavaScript Object
我有一个像
这样的 JS 对象
var map = {
prov1: { paper.path("M182.89887,371.5666L18,.... },
prov2: { paper.path("M182.89887,371.5666L18,.... },
prov3: { paper.path("M182.89887,371.5666L18,....}
};
现在我需要为这些属性中的每一个分配一些功能,例如
$(map.prov1).hover({
alert("You Assigned A Task to prov1");
});
在一个工作示例中它应该像
$(prov1).hover({
alert("You Assigned A Task to prov1");
});
但是如你所知,我无法直接访问 $(prov1)
和 $(map.prov1)
returns 作为 [object object]
!
能否请您告诉我如何将对象的 name
而不是 value
获取到 运行 函数?
你需要这样的东西吗?
var map = {
prov1: function() { return paper.path("M182.89887,371.5666L18,.... ")},
prov2: function() { return paper.path("M182.89887,371.5666L18,.... ")},
prov3: function() { return paper.path("M182.89887,371.5666L18,....")}
};
map.prov1();
我认为您在此处使用 jquery 是在试图使它过于复杂,而实际上不需要它。
你可以简单地做...
var paper = new Raphael('test', 200, 200);
var attrs = { fill: 'blue' }
var map = {
prov1: paper.rect(10,10,20,20).attr( attrs ) ,
prov2: paper.rect(40,40,50,60).attr( attrs ) ,
prov3: paper.rect(50,60,70,80).attr( attrs )
};
map.prov1.click( function() { alert('Hi Im prov1') } );
如果你需要遍历对象,你可以这样做
Object.keys( map ).forEach( function( el ) {
map[el].click( function() { alert('Hi, Im ' + el) } );
} );
jsfiddle 需要迭代的方法
我有一个像
这样的 JS 对象var map = {
prov1: { paper.path("M182.89887,371.5666L18,.... },
prov2: { paper.path("M182.89887,371.5666L18,.... },
prov3: { paper.path("M182.89887,371.5666L18,....}
};
现在我需要为这些属性中的每一个分配一些功能,例如
$(map.prov1).hover({
alert("You Assigned A Task to prov1");
});
在一个工作示例中它应该像
$(prov1).hover({
alert("You Assigned A Task to prov1");
});
但是如你所知,我无法直接访问 $(prov1)
和 $(map.prov1)
returns 作为 [object object]
!
能否请您告诉我如何将对象的 name
而不是 value
获取到 运行 函数?
你需要这样的东西吗?
var map = {
prov1: function() { return paper.path("M182.89887,371.5666L18,.... ")},
prov2: function() { return paper.path("M182.89887,371.5666L18,.... ")},
prov3: function() { return paper.path("M182.89887,371.5666L18,....")}
};
map.prov1();
我认为您在此处使用 jquery 是在试图使它过于复杂,而实际上不需要它。
你可以简单地做...
var paper = new Raphael('test', 200, 200);
var attrs = { fill: 'blue' }
var map = {
prov1: paper.rect(10,10,20,20).attr( attrs ) ,
prov2: paper.rect(40,40,50,60).attr( attrs ) ,
prov3: paper.rect(50,60,70,80).attr( attrs )
};
map.prov1.click( function() { alert('Hi Im prov1') } );
如果你需要遍历对象,你可以这样做
Object.keys( map ).forEach( function( el ) {
map[el].click( function() { alert('Hi, Im ' + el) } );
} );
jsfiddle 需要迭代的方法