0

我正在循环一个对象并在 Raphael 中创建圆圈。在我创建的每个圆圈上,我都附加了一个单击事件和一个鼠标悬停事件。但是,当我使用“this”将圆圈移到前面时,例如 this.toFront() ,那么我的 .click 函数不起作用。如果我对 this.toFront() 发表评论,那么我的点击功能将按预期工作。

你能帮我理解我做错了什么吗?

//dummy variables for example
var x_coord = '31';
var y_coord = '50';
var diameter = '80';
var opportunityUrl = 'http://www.google.com';
var fillColorStart = '#000';
var fillColorEnd = '#FF0000';

var p = paper.circle(x_coord, y_coord, diameter)
.data("i", i)
.click(function() {
   alert(opportunityUrl);
})
.mouseover(function() {
   this.toFront();
})
.attr({"fill": "90-"+fillColorStart+":5-"+fillColorEnd+":95","fill-opacity": 0.5})
.glow({color: "#4b4b4b", width: 7})
4

2 回答 2

1

虽然我不确定 Raphael 是如何完全工作的,但我认为this在这种情况下指的是 window 对象。这会破坏事件链,这可能会破坏对象上的所有事件,从而导致您.click()无法正常工作。

于 2012-05-09T18:47:27.133 回答
0

我在这里回答了一个类似的问题。基本上,this匿名函数中的指针并不指您认为它所做的事情。

在您的情况下,执行 Elliot 上面所说的可能是最简单的解决方案。

于 2012-05-09T21:16:34.700 回答