2013-03-14 75 views
0

我使用rahaeljs動態生成一些正方形。這些方塊有一個事件處理程序。當我試圖操縱的風格,它失敗取決於ATTR()我嘗試設置:新樣式不適用於事件上的元素

function changeColor(obj) { 
     return function() { 
      obj.attr({cursor : 'pointer'}); 
     } 
    } 



    var main = function() { 

    var width = 901; 
    var height = 868; 
    var space = 50; 

    var paper = Raphael('paper', width, height); 


    for (var y = 0; y < height; y += space) { 
     for (var x = 0; x < width; x += space) { 
      var r = paper.rect(x, y, space, space); 
      r.attr({fill : 'transparent'}) 
      r.click(changeColor(r)); 


      } 
    } 

    }; 

    window.onload = main; 

如果我設置光標到{光標:「指針」},這工作得很好,如果我嘗試使用obj.attr({fill:'#ff00ff'})更改填充顏色;在changeColor-function中,什麼都不會發生。控制檯中也沒有錯誤。

我正在使用最新版本的raphael。

有什麼建議嗎?

問候, 邁克爾

+0

你想'fill'或'backgroundColor' – 2013-03-14 15:07:35

+0

我不在乎。我只是想改變顯示器上的顏色。我試圖使用backgroundColor,但這並不改變顏色。 – user1145874 2013-03-14 15:30:50

回答

1

你會要麼非常逗樂或這個答案很沮喪......問題與透明填充屬性做。 SVG將完全透明的對象視爲不可點擊的,讓點擊事件過濾到它們下面的圖層。因此,您的矩形不會接收點擊事件。

如果不能設置顏色爲純色,你至少可以給填充屬性阿爾法的一個微小的,幾乎無法察覺量:

r.attr({ fill: 'rgba(255,255,255,0.001)' }); 

上述工作完成後,你應該可以重新開業!

+0

嗨,這是純粹的挫折感。我嘗試了你的解決方案,但我仍然沒有恢復業務。問題依然如此。我在你的論證中不理解的東西:如果一個透明的對象不可點擊,爲什麼光標的東西有效?我嘗試使用backgroundColor並填充。我寧願填寫,但都不會改變顏色,只有光標... – user1145874 2013-03-14 20:17:19

+0

好吧,我明白了,謝謝!不透明度0.001仍然太透明。如果我將它設置爲0.5,它就可以工作......但是,我不明白爲什麼光標與透明對象一起工作。 – user1145874 2013-03-14 20:23:15

+0

好奇 - 0.001在Firefox中爲我工作。我仍然會爭辯說,使用堅實的填充可能是更明智的做法 - 這對你來說可行嗎? – 2013-03-14 20:54:51

相關問題