0

Raphaeljs では、次のコード行を記述しました:(関連する部分のみが示されています)

......
    sets.id = index;
    grid.hex[poly].click(
      function(e)
    {   
        var id=this.id
.....

セット[]のIDを適切に設定しますが、「this」のIDは、クリックされたセット内のパスのIDです。セットのIDが必要です。どうすればそれを達成できますか?

編集:クリックされたパスではなく、「これ」をセットにしたい。

4

2 に答える 2

1

関数をバインドするsets

......
    sets.id = index;
    grid.hex[poly].click($.proxy(function(e){
         var id = this.id;
    }, sets);
.....

または、jQuery を使用していない場合。

//https://gist.github.com/978329
if(!Function.prototype.bind) {
   Function.prototype.bind = function(to){
        // Make an array of our arguments, starting from second argument
    var partial = Array.prototype.splice.call(arguments, 1),
        // We'll need the original function.
        fn  = this;
    var bound = function (){
        // Join the already applied arguments to the now called ones (after converting to an array again).
        var args = partial.concat(Array.prototype.splice.call(arguments, 0));
        // If not being called as a constructor
        if (!(this instanceof bound)){
            // return the result of the function called bound to target and partially applied.
            return fn.apply(to, args);
        }
        // If being called as a constructor, apply the function bound to self.
        fn.apply(this, args);
    }
    // Attach the prototype of the function to our newly created function.
    bound.prototype = fn.prototype;
    return bound;

}

grid.hex[poly].click(function(e){
         var id = this.id;
    }.bind(sets));
于 2012-11-22T16:19:37.613 に答える
0

やってみました?:

var id = this.parentElement.id

アップデート:

http://raphaeljs.com/から:

Raphaël ['ræfeɪəl] は、SVG W3C 勧告と VML をグラフィック作成のベースとして使用しています。これは、作成するすべてのグラフィカル オブジェクトが DOM オブジェクトでもあることを意味するため、JavaScript イベント ハンドラーをアタッチしたり、後で変更したりできます。

setsがグラフィカルオブジェクトであると仮定すると(パスが含まれているため、パスが含まれていると思います)、アクセスthisするparentElementプロパティが必要です。

うまくいかない場合は、次のようにアクセスすることもできます。

var id = sets.id;

閉鎖のために機能するはずです。

于 2012-11-22T16:06:57.710 に答える