( Veja a última edição nesta resposta se precisar usar .on()
com elementos preenchidos com JavaScript )
Use isso para elementos que não são preenchidos usando JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
tem seu próprio manipulador: http://api.jquery.com/hover/
Se você deseja fazer várias coisas, encadeie-as no .on()
manipulador da seguinte maneira:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
De acordo com as respostas fornecidas a seguir você pode usar hover
com .on()
, mas:
Embora fortemente desanimado com o novo código, você pode ver o nome do pseudo-evento "hover" usado como uma abreviação para a sequência "mouseenter mouseleave". Ele anexa um único manipulador de eventos para esses dois eventos, e o manipulador deve examinar event.type para determinar se o evento é mouseenter ou mouseleave. Não confunda o nome do pseudo-evento "hover" com o método .hover (), que aceita uma ou duas funções.
Além disso, não há vantagens de desempenho em usá-lo e é mais volumoso do que apenas usar mouseenter
ou mouseleave
. A resposta que forneci requer menos código e é a maneira correta de obter algo assim.
EDITAR
Já faz um tempo desde que essa pergunta foi respondida e parece ter ganhado alguma força. O código acima ainda permanece, mas eu queria adicionar algo à minha resposta original.
Embora prefira usar mouseenter
e mouseleave
(me ajude a entender o que está acontecendo no código) .on()
, é o mesmo que escrever o seguinte comhover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Desde a pergunta original fez perguntar como eles poderiam usar corretamente on()
com hover()
, eu pensei que iria corrigir o uso de on()
e não achar que é necessário adicionar o hover()
código no momento.
EDIÇÃO 11 DE DEZEMBRO DE 2012
Algumas novas respostas fornecidas abaixo detalham como .on()
deve funcionar se o div
em questão for preenchido usando JavaScript. Por exemplo, digamos que você preencha um evento div
usando jQuery .load()
, assim:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
O código acima para .on()
não seria válido. Em vez disso, você deve modificar seu código levemente, assim:
$(document).on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
}, ".selector"); //pass the element as an argument to .on
Este código funcionará para um elemento preenchido com JavaScript após a .load()
ocorrência de um evento. Apenas mude seu argumento para o seletor apropriado.
mouseenter
emouseleave
, como sugerido por calebthebrewer.