0

クリック イベント内にいるときは、円などの単一の Raphael 要素に対して関数を実行したいと考えています。ページ上のすべての円ではなく、その個々の要素をターゲットにするにはどうすればよいですか?

JQuery セレクター -$(this).animate({ opacity: 0.2}, 2000);

に相当するものを知る必要があり$(this)ます。または、その要素を選択する別の方法がある場合は?

4

2 に答える 2

4

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 を使用することをお勧めします。

例: http://jsfiddle.net/FyM7z/

于 2012-10-23T10:12:30.857 に答える
1

thisjQuery の場合は DOM 要素を参照するだけで、多くのコンテキストを持つことができます。キャンバス要素に Raphael の新しいインスタンスを作成し、var instance = new Raphael(canvasEl, 100, 100 )後でキャンバスを参照したい場合は、それを変数にキャッシュし、それをコード全体で使用する必要があります。

Raphael でパスを作成していて、それらを保存したい場合は、それらを のような変数に割り当てます var square = raphaelCanvas.rect(20,20,20,20)

于 2012-10-23T10:02:24.417 に答える