RaphaëlJSpaper.getById()返回null

时间:2014-03-06 19:32:47

标签: javascript jquery raphael

我试图通过使用getById()函数获取Raphaël对象,但无论我尝试什么,该函数都返回null。

这是我正在使用的RaphaëlJS代码:

// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);

var circle = paper.circle(100, 100, 100);
circle.attr({"fill": "#f00", "id": "test"});
circle.data("id", "test");

var getCircle = paper.getById("test");

alert(getCircle); //Returns null?

为什么paper.getById("test");没有返回圆圈对象?

我已使用attr()data()定义了ID,但似乎没有任何效果。

上述代码的JsFiddle:http://jsfiddle.net/Mf9q6/

2 个答案:

答案 0 :(得分:2)

仔细阅读documentation

  

通过内部 ID返回元素。

这与元素上的id属性不同。 Paper.getById()预期的ID为Element.id

你可能想要var getCircle = paper.getById(circle.id);,它只是对circle的同一个对象的引用。

Here's your fiddle, updated

答案 1 :(得分:1)

如果我正确理解了您的问题,那么您正尝试将id设置为您的元素。然后在线下的某处得到元素的id。

如果是这样,那么你几乎就在那里:

// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);

var circle = paper.circle(100, 100, 100);
circle.attr({"fill": "#f00", "id": "test"});
circle.data("id", "test");

var getCircle = circle.data("id");

alert(getCircle); //Returns test

修改

如果您尝试按值获取圆圈,就像您的示例“test”

一样
paper.forEach(function (el) 
{
    if (el.data("id") == "test")
        // return el - do what you want
});