2013-03-14 52 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

相关问题