2012-07-24 106 views
0

我正在使用Raphael JS,但我認爲這是純粹的JavaScript或jQuery的問題。多個元素一次使用相同的點擊功能。怎麼樣?

我有兩個元素文本和一個圓(橢圓),我使用一個變量來存儲它們以備後用。

所以,我在想,不要一遍又一遍地重複我自己,我會創建一個數組並在點擊時使用它。

但它不工作。如何解決這個問題,併爲我的數組中的每個變量(對象)分配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"; 
}); 
+0

我懷疑陣列具有'.click'功能... – jbabey 2012-07-24 17:31:31

回答

1

jQuery $ .each函數可以幫助你做到這一點; circletext

$.each(myArray, function(i, v) { 
    v.click(function() { 
     window.location = "http://somewebsite.com"; 
    }); 
}); 
1

你不需要的對象存儲在數組中,如果你只是想繼續在他們身邊,你已經有兩個變量引用它們。定義函數一次,然後將其分配給使用它的任何元素:

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); 
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; 
} 
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 
       }); 
相關問題