0

Raphael セットはイベント ハンドラーを受け入れますか? ラファエル セットにイベント ハンドラーを設定すると、セットをクリックしようとすると、次のように、セット自体ではなく、セット内の各ラファエル シェイプに割り当てられているように見えます。

http://jsbin.com/aponen/3/edit

カスタム属性または同様のアプローチを介して、セット内の要素をセット自体と連鎖させるなどのさまざまなハックには興味がありません。

ありがとう

4

1 に答える 1

2

<g>はい、イベント ハンドラーは各オブジェクトに個別に適用されます。Raphael は SVGの要素を使用しません。ただし、いくつかのキーストロークでここで問題を解決できます。

set.push(rect);
set.push(circle);
set.attr({'fill': 'yellow'});
set.click(function(evt) {
    //old
    this.attr({'fill': 'red'});
    //new
    set.attr({'fill': 'red'});
});

それが機能する方法と、それが機能するかもしれないと思っていた方法との最大の違いは、ハンドラー内の「これ」の意味です。それを「設定」に変更すると、それが正しく修正されます。

UPDATE、2013 年 1 月 26 日 コメントごとに、Raphael の「データ」メソッドを使用して、1 行でセットをセットの子にアタッチすることもできます。

set.push(rect);
set.push(circle);

set.data('myset', set);

set.attr({'fill': 'yellow'});
set.click(function(evt) {
  this.data('myset').attr({'fill': 'red'});
});

子供からセットにアクセスするためのネイティブな方法があるとは思いませんが、見逃している可能性があります。

于 2013-01-25T18:36:48.060 に答える