我正在循环一个物体并在拉斐尔创造圈子。在我创建的每个圆圈上,我附加了一个click事件和一个mouseover事件。但是,当我使用“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})
答案 0 :(得分:1)
虽然我不确定Raphael是如何完全工作的,但我认为this
在这种情况下是指窗口对象。这会破坏事件链,这可能会破坏对象上的所有事件,这会导致.click()
无法正常工作。
答案 1 :(得分:0)
我已经回答了类似的问题here。基本上,匿名函数中的this
指针并不是指您的想法。
在你的情况下,做Elliot上面所说的可能是最简单的解决方案。