新样式不适用于事件上的元素

时间:2013-03-14 14:53:01

标签: javascript raphael

我使用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。

有什么建议吗?

此致 迈克尔

1 个答案:

答案 0 :(得分:1)

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

如果你不能将颜色设置为纯色,你至少可以给fill属性一个微小的,几乎无法察觉的alpha值:

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

完成后,你应该重新开始营业!