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;

如果我将光标设置为 {cursor : 'pointer'},如果我尝试使用 obj.attr({fill : '#ff00ff'}); 更改填充颜色,则效果很好。在 changeColor 函数中,没有任何反应。控制台中也没有错误。

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

有什么建议么?

问候,迈克尔

4

1 回答 1

1

你会对这个答案感到非常好笑或非常沮丧......问题与透明填充属性有关。SVG 将完全透明的对象视为不可点击,让点击事件过滤到它们下方的图层。因此,您的矩形没有收到点击事件。

如果你不能将颜色设置为纯色,你至少可以给 fill 属性一个很小的,几乎不明显的 alpha 量:

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

完成后,您应该恢复营业了!

于 2013-03-14T16:38:59.937 回答