有关于为JavaScript对象分配函数的问题

时间:2015-06-09 06:31:36

标签: javascript jquery raphael

我有一个类似

的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)会以[{1}}的身份返回!

您能告诉我如何获取对象的[object object]而不是name来运行该功能吗?

2 个答案:

答案 0 :(得分:1)

我认为你试图通过在这里使用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') } ); 

jsfiddle

如果需要迭代对象,可以执行类似

的操作
Object.keys( map ).forEach( function( el ) { 
    map[el].click( function() { alert('Hi, Im ' + el) } ); 
} );
如果需要,使用迭代的

jsfiddle方法

答案 1 :(得分:0)

你需要这样的东西吗?

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();