クリック イベント内にいるときは、円などの単一の Raphael 要素に対して関数を実行したいと考えています。ページ上のすべての円ではなく、その個々の要素をターゲットにするにはどうすればよいですか?
JQuery セレクター -$(this).animate({ opacity: 0.2}, 2000);
に相当するものを知る必要があり$(this)
ます。または、その要素を選択する別の方法がある場合は?
クリック イベント内にいるときは、円などの単一の Raphael 要素に対して関数を実行したいと考えています。ページ上のすべての円ではなく、その個々の要素をターゲットにするにはどうすればよいですか?
JQuery セレクター -$(this).animate({ opacity: 0.2}, 2000);
に相当するものを知る必要があり$(this)
ます。または、その要素を選択する別の方法がある場合は?
Raphael 自体を使用してイベントをアタッチするthis
と、Raphael でラップされた要素になります (つまりthis
、デフォルトでは $(selector) に相当します)。
例えば
paper.rect(50, 50, 50, 50)
.attr('fill', '#000')
.click(function () {
// `this` is the rect Raphael object
this.attr('fill', '#ff0000'); // turn the clicked rect red
});
jQuery スタイルのラッパーを実装するには、弱いマップの実装が必要であり、これらはリークする傾向があります。イベントをノードに直接アタッチするよりも、イベントを SVG 要素にアタッチするために Raphael API を使用することをお勧めします。
this
jQuery の場合は DOM 要素を参照するだけで、多くのコンテキストを持つことができます。キャンバス要素に Raphael の新しいインスタンスを作成し、var instance = new Raphael(canvasEl, 100, 100 )
後でキャンバスを参照したい場合は、それを変数にキャッシュし、それをコード全体で使用する必要があります。
Raphael でパスを作成していて、それらを保存したい場合は、それらを のような変数に割り当てます var square = raphaelCanvas.rect(20,20,20,20)
。