1

私はRaphaëlを使用してグラフ (ネットワーク)を描画しています。ノードは円として表され、示されています。ユーザーはキャンバスをクリックしてノードを動的に追加できます。これにより、新しく構築されたオブジェクトがモデル オブジェクトにもElementプッシュされ、作成したばかりのノードに関する貴重なデータが保存されます。Set

ユーザーがノードの上にマウスポインターを持ってきたときに、各ノードの近くにモデルから言及されたデータを表示したいと思います。私が避けたいのは、作成時にすべてのノードで新しいイベントを作成することです。イベントをキャンバスに委任して、各ノードのグローバル ハンドラーを作成したいと考えています。

私はすでにそのようなハンドラーを作成し、それにイベントを添付しました:

var Paper    = Raphael('Graph',600,600),
    $Canvas  = $(Paper.canvas),
    onMouseOver = function(e){
      // Wish to have an Element object
    }

$Canvas.on('mouseover','circle',onMouseOver);

イベントとハンドラーは、円でのみ発生するため、正常に機能します。

それを object としてElement.data()取得または取得し、関連するすべてのオブジェクトにアクセスするにはどうすればよいですか? で検索する必要がありますSetか? もしそうなら、どのように?

4

1 に答える 1

1

セット内の要素が Raphaël によって識別されると仮定すると、Element.id新しい要素を作成するときに、同等の ID を DOM ノードに割り当てることができます。

newElement = Paper.circle(x, y, r);
newElement.node.id = newElement.id;

次に、マウスオーバー ハンドラーで、要素の ID をevent.target

onMouseOver = function(e){
  var elemId = e.target.id;
  //find your element in the set by this id to get the precious data
}
于 2013-04-02T21:32:08.633 に答える