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匿名関数内のポインターは、それが何をしていると思うかを参照しません。

あなたの場合、エリオットが上で言ったことをするのがおそらく最も簡単な解決策です。

于 2012-05-09T21:16:34.700 に答える