如何访问Raphael中任何元素的id属性

时间:2010-12-15 20:34:04

标签: javascript jquery raphael setattribute

我正在使用Raphael在网站上绘制一些元素。元素包括矩形,线(路径)。我给了path元素一个id,并尝试在该行的onclick事件中访问它。但是当我对id进行警报时,看不到任何东西。以下是代码段

function createLine() 
{ 
  var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight);
  t.attr('stroke-width','3');
  t.attr('id','Hello');
  t.node.onclick = processPathOnClick; 
}

function processPathOnClick() 
{
    alert($(this).attr("id"));
}

任何人都可以告诉我上面的代码有什么问题。任何指针都会有所帮助。

由于

3 个答案:

答案 0 :(得分:14)

您确定不想写$(t.node).attr('id','Hello');吗?

更新:有人对这个答案进行了低估。我真的觉得有必要指出这种设置id并不是特别好的方式。你最好使用:

t.node.id = 'Hello';

我希望有一种方法可以赞扬胡安门德斯,除了赞同他对这个答案的评论。

答案 1 :(得分:3)

试试这个:

function createLine()  { 
    var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight);
    t.attr('stroke-width','3');
    t.id = 'Hello';
    t.node.onclick = processPathOnClick;
}

function processPathOnClick() {
    alert($(this).id);
    alert(this.id); // This should work too...
}

基本上,您在Raphael线路实例变量“t”上创建一个名为“id”的新属性。在我看来,这是一种黑客行为,但它确实很好。

答案 2 :(得分:2)

尝试使用jquery

设置处理程序
function createLine() 
{ 
  var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight);
  t.attr('stroke-width','3');
  t.attr('id','Hello');
  $(t.node).click(processPathOnClick);
}

function processPathOnClick() 
{
    alert($(this).attr("id"));
}