8

Web サイトの要素を描画するために Raphael を使用しています。要素には、長方形、線 (パス) が含まれます。パス要素に ID を指定し、その行の onclick イベントでアクセスしようとしました。しかし、IDのアラートを実行すると、何も表示されません。以下はコードスニペットです

function createLine() 
{ 
  var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight);
  t.attr('stroke-width','3');
  t.attr('id','Hello');
  t.node.onclick = processPathOnClick; 
}

function processPathOnClick() 
{
    alert($(this).attr("id"));
}

上記のコードの問題点を誰か教えてください。どんなポインタでも役に立ちます。

ありがとう

4

3 に答える 3

14

$(t.node).attr('id','Hello');代わりに書きたくありませんか?

更新:誰かがこの回答に反対票を投じました。そして、ID を設定するこの方法はあまり良くないことを指摘しなければならないと本当に感じています。以下を使用する方がよいでしょう:

t.node.id = 'Hello';

この回答に対する彼のコメントに賛成票を投じる以外に、フアン・メンデスの功績を認める方法があればいいのにと思います。

于 2010-12-15T21:03:20.640 に答える
3

これを試して:

function createLine()  { 
    var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight);
    t.attr('stroke-width','3');
    t.id = 'Hello';
    t.node.onclick = processPathOnClick;
}

function processPathOnClick() {
    alert($(this).id);
    alert(this.id); // This should work too...
}

基本的に、Raphael 行のインスタンス変数「t」に「id」という新しいプロパティを作成しています。私の意見では、これは一種のハッキングですが、うまく機能します。

于 2011-03-31T19:25:34.163 に答える
2

jqueryを使用してハンドラーを設定してみてください

function createLine() 
{ 
  var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight);
  t.attr('stroke-width','3');
  t.attr('id','Hello');
  $(t.node).click(processPathOnClick);
}

function processPathOnClick() 
{
    alert($(this).attr("id"));
}
于 2010-12-15T20:53:24.223 に答える