У Raphael есть функция анимации, поэтому это должно работать, если установлено правильно. Проблема в том, что «это» не будет ссылаться на элемент Рафаэля, он будет ссылаться на элемент JQuery, поэтому нам нужно изменить это.
Мы можем сделать это с помощью метода javascripts .bind(), вот пример того, как он будет выглядеть, если мы хотим применить его к каждому элементу (вы можете избавиться от цикла, если хотите только добавить его в один элемент).
Это ключевой бит (просто посмотрите на среднюю линию, то есть бит связывания функции) .. это означает, что элемент Рафаэля «Ящики [el]» будут переданы в «это».
Object.keys(boxes).forEach(function(el) {
$(boxes[ el ].node).hoverIntent(hoverFunc.bind(boxes[ el ]));
});
Таким образом, вся эта партия может выглядеть так ...
var Draw = Raphael("canvas", 200, 200);
var boxes = {
BC: Draw.path("M50 50, L50,60, L60,60 L60,50 L50,50").attr({
fill: "#000"
}),
ON: Draw.path("M70 70, L70,80, L80,80 L80,70 L70,70").attr({
fill: "#000"
}),
NB: Draw.path("M90 90, L90,100, L100,100 L100,90 L90,90").attr({
fill: "#000"
})
}
function hoverFunc() {
this.animate({
"fill": "#F38A03"
}, 500);
}
Object.keys(boxes).forEach(function(el) {
$(boxes[ el ].node).hoverIntent(hoverFunc.bind(boxes[ el ]));
});
jsfiddle
jsfiddle с висения из
Спасибо Яну, это именно то, что я искал, единственное, на что я надеюсь, что вы можете мне помочь, - добавить событие мыши в «hoverFunc()». Я имею в виду, что сейчас событие hover отлично работает, когда пользователь перемещает мышь поверх но как добавить 'animate()' к цвету по умолчанию на мыши? – Suffii
[Вот пример] (http://jsfiddle.net/h4nBx/24/), который я попытался добавить выводом мыши, но он не работает – Suffii
Добавили дополнительную jsfiddle – Ian