在raphaeljs中徘徊不起作用

时间:2011-04-03 15:15:08

标签: raphael

我目前正在将匿名函数应用于悬停事件,该事件调用内部的全局函数:

GridInterface.HexGrid.TileGlobal = {

hoverIn: function(obj) {
  var self = obj;
  self.tile.attr({ fill: '#c7c7c7', stroke : '#000' });
  self.tile.toFront();
  self.label.toFront();
  self.label.attr({ fill : '#000' });
},

hoverOut: function(obj) {
  var self = obj;
  self.tile.attr({ fill : '#d0d1ff', stroke : '#aaa' });
  self.label.attr({ fill: '#999' });
}
}

然后我打电话:

 .hover(function() {
        GridInterface.HexGrid.TileGlobal.hoverIn(self);
      }, function() {
        GridInterface.HexGrid.TileGlobal.hoverOut(self);
      }
    )

对象。但是,当我将其切换为取消切换时,不会删除该事件。我认为这是因为它是一个不同的匿名功能。关于如何解决的任何想法?

2 个答案:

答案 0 :(得分:1)

    GridInterface.HexGrid.Tile = function(coords) {

        var self = this;


        this.hoverIn = function() {
          this.attr({ fill: '#c7c7c7', stroke : '#000' });
        };

        this.hoverOut = function() {
          this.attr({ fill: '#d0d1ff', stroke: '#aaa' });
        };

        this.attachEvents = function()
        {
          self.el[0].hover(self.hoverIn, self.hoverOut);
        };
    };

然后在其他地方我打电话:

tile.el[0].unhover(tile.hoverIn, tile.hoverOut);

平铺是上述功能的对象实例。

答案 1 :(得分:0)

也许解决问题不是raphäel事件处理,而是使用您选择的库,即jQuery:$(circle.node).click(...)

就像你可以按需添加事件/删除事件。