我目前正在将匿名函数应用于悬停事件,该事件调用内部的全局函数:
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);
}
)
对象。但是,当我将其切换为取消切换时,不会删除该事件。我认为这是因为它是一个不同的匿名功能。关于如何解决的任何想法?
答案 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(...)
就像你可以按需添加事件/删除事件。