Примечание: Это демо было сделано со старой версией Рафаэля.Теперь у Рафаэля есть свои собственные обработчики событий, включая .mouseover()
и .hover()
.
Сокращение отit:
Просто оберните объект DOM, чтобы сделать из него объект jQuery, или используйте встроенные в Raphael пользовательские обработчики событий:
$(st[0]).mouseover( ... ); // This uses the jQuery .mouseover() method
Или, возможно, более удобно, и поддерживается IE:
$(st[0]).hover( ... ); // This uses the jQuery .hover() method
Или, используя Метод встроенного обработчика событий Raphael :
st.mouseover( ... ); // This uses the Raphael .mouseover() method
st.hover( ... ); // This uses the Raphael .hover() method
Длинна этого:
Вы можете получить ссылку на объект DOM для работы, используя node
или [0]
, поскольку RaphaelObject[0]
всегда ссылка на элемент DOM:
aus.tas = R.path("...").attr(attr);
// aus.tas is a Raphael object
// aus.tas[0] is aus.tas.node is the reference to the DOM Object
$(aus.tas[0]).mouseover(function() { // Could have also use aus.tas.node
...
});
// Raphael now has custom event handlers
aus.tas.mouseover(function() {
...
});
aus.tas.hover(function() {
...
}, function() {
...
});
Итак, с вашей функцией:
(function (st, state) {
// st is a Raphael Object
// st[0] is st.node is the reference to the DOM Object
// This is now using jQuery for mouseover!
$(st[0]).mouseover(function() {
...
});
...
})(aus[state], state);
Кроме того, я бы предложил посмотреть в jQuery .hover()
функция, которая прекрасно обрабатывает IE:
(function (st, state) {
// This is now using jQuery not Raphael for hover!
$(st[0]).hover(function() {
... // the mouseenter function
}, function() {
... // the mouseleave function
});
...
})(aus[state], state);
В качестве упрощенной демонстрации, вот как связать mouseenter
и mouseout
, используя .hover()
с элементом Raphael ( протестировано в IE 8 ):
$(function() {
var elie, paper = Raphael("canvas", 500, 500);
// Create Raphael element
elie = paper.rect(0,0,100,100).attr("fill","#000");
// Get reference to DOM object using .node and bind
// mouseover and mouseout to it:
$(elie[0]).hover(function() {
elie.attr("fill","#FFF");
},function() {
elie.attr("fill","#000");
});
});
Дополнительно, Raphael .hover()
Кажется, что метод работает и в IE.