0

私は Raphael JS を使用していますが、これは純粋な JavaScript または jQuery の質問だと思います。

テキストと円(楕円)の2つの要素があり、変数を使用して後で使用できるようにそれらを保存しています。

だから、私は自分自身を何度も繰り返す代わりに、配列を作成してクリックで使用することを考えていました.

しかし、それは機能していません。この問題を解決し、配列内のすべての変数 (オブジェクト) に onclick を割り当てる方法は?

var circle = paper.ellipse(350, 320, 95, 90);
var text = paper.text(350, 320, "My text");

var myArray = [circle, text];
myArray.click(function () {
    window.location = "http://somewebsite.com";
});
4

4 に答える 4

1

オブジェクトを保持したいだけの場合は、オブジェクトを配列に格納する必要はありません。既に と の 2 つの変数でオブジェクトを参照していcircleますtext。関数を一度定義してから、それを使用する任意の要素に割り当てます。

var circle = paper.ellipse(350, 320, 95, 90);
var text = paper.text(350, 320, "My text");

function clickFunction()
{
    window.location = "http://somewebsite.com";
}

circle.addEventListener("click", clickFunction);
text.addEventListener("click", clickFunction);

または、jQuery を使用して:

circle.click(clickFunction);
text.click(clickFunction);
于 2012-07-24T17:11:51.977 に答える
1

raphaelJSでやりたいなら…

var circle = paper.ellipse(350, 320, 95, 90);
var text = paper.text(350, 320, "My text");
var click_set = paper.set();
click_set.push(circle);
click_set.push(text);

click_set.click(function(){
 // do what you want ... this function will automatically be bound to all the elements that //you push in the set
               });
于 2012-07-24T19:38:21.957 に答える
1

これには jQuery の $.each 関数が役立ちます。

$.each(myArray, function(i, v) {
    v.click(function() {
        window.location = "http://somewebsite.com";
    });
});
于 2012-07-24T16:55:08.027 に答える
0

要素をループして、各要素にハンドラーを追加するだけです。ライブラリは必要ありません。

var circle = paper.ellipse(350, 320, 95, 90);
var text = paper.text(350, 320, "My text");

var myArray = [circle, text];
var handler = function () {
    window.location = "http://somewebsite.com";
};

for (var i = 0; i < myArray.length; i++) {
    myArray[i].onclick = handler;
}
于 2012-07-24T17:32:43.500 に答える