Рафаэль JS: как убрать события? - PullRequest
6 голосов
/ 11 июня 2011

Я использую события Raphael .mouseover () и .mouseout (), чтобы выделить некоторые элементы в моем SVG. Это работает нормально, но после того, как я щелкну по элементу, я хочу, чтобы он прекратил выделять.

В документации Рафаэля Я нашел:

Чтобы отменить привязку событий, используйте те же имена методов с префиксом «un», т.е. element.unclick (f);

но я не могу заставить это работать, и я также не понимаю параметр 'f'.

Это не работает, но что делает ??

obj.click( function() {
  this.unmouseover();
});

1 Ответ

5 голосов
/ 11 июня 2011

Хорошо, вам нужно передать функцию-обработчик в запрос unmouseover:

// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);
// Creates circle at x = 50, y = 40, with radius 10
var circle = paper.circle(50, 40, 10);
// Sets the fill attribute of the circle to red (#f00)
circle.attr("fill", "#f00");
// Sets the stroke attribute of the circle to white
circle.attr("stroke", "#fff");

var mouseover = function (event) {
    this.attr({fill: "yellow"});
}
var mouseout = function (event) {
    this.attr({fill: "red"});
}

circle.hover(mouseover, mouseout);
circle.click(function (event) {
    this.attr({fill: "blue"});
    this.unmouseover(mouseover);
    this.unmouseout(mouseout);
});

http://jsfiddle.net/GexHj/1/

Вот о чем f. Вы также можете использовать unhover():

circle.click(function (event) {
    this.attr({fill: "blue"});
    this.unhover(mouseover, mouseout);
});

http://jsfiddle.net/GexHj/2/

...