в рафаэли не работает - PullRequest
       0

в рафаэли не работает

1 голос
/ 03 апреля 2011

В настоящее время я применяю анонимные функции к событию hover, которое вызывает глобальные функции внутри:

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);
      }
    )

на объекте. Однако, когда я переключаю это на unhover, событие не удаляется. Я думаю, это потому, что это другая анонимная функция. Есть идеи как починить?

Ответы [ 2 ]

1 голос
/ 13 апреля 2011
    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);

Плитка, являющаяся экземпляром объекта этой функции.

0 голосов
/ 08 апреля 2011

Возможно, решить проблему не с помощью обработки событий raphäel, а с помощью библиотеки по вашему выбору, например, jQuery: $ (circle.node) .click (…)

, например, вы можете добавлять / удалять / удалять события по требованию..

...