2010-11-06 24 views
9

Estoy experimentando con jQuery. Mientras intentaba descubrí que no puedo usar el evento de desplazamiento con .bind. Y no sé lo que está mal.no se puede usar .bind() para vincular el vuelo estacionario

$(document).ready(function(){ 
$('.some-class').bind({ 
    hover: function(e) { 
    // Hover event handler 
    alert("hover"); 
    }, 
    click: function(e) { 
    // Click event handler 
    alert("click"); 
    }, 
    blur: function(e) { 
    // Blur event handler 
    } 
}); 
}); 

Lo que es sorprendente (al menos para mí) es que el vuelo estacionario no funciona. Los otros "clic" y "desenfoque" funcionan bien.

También funciona lo siguiente sin ningún problema.

$(".some-class").hover(function(){ 
    // stuff 
}) 

Tal vez pueda usar el código anterior. Pero no saber por qué es una gran molestia. Entonces, ¿alguna idea?

Gracias!

Respuesta

36

Es necesario utilizar los mouseenter y mouseleave eventos (que utiliza .hover()) directamente al enlazar con un objeto como éste:

$(document).ready(function(){ 
$('.some-class').bind({ 
    mouseenter: function(e) { 
    // Hover event handler 
    alert("hover"); 
    }, 
    mouseleave: function(e) { 
    // Hover event handler 
    alert("hover"); 
    }, 
    click: function(e) { 
    // Click event handler 
    alert("click"); 
    }, 
    blur: function(e) { 
    // Blur event handler 
    } 
}); 
}); 

.hover()is defined specially here en el código de evento jQuery ... simplemente no es compatible al igual que otros eventos en lugares como .bind(), ya que no es un evento, es solo una función para ayudarlo a vincular los eventos mouseenter y mouseleave.

+3

Nota a la libre: RTFM! – Sinan

3

No hay muchas razones, pero simplemente no está en la especificación. Compruebe que el documento suspendido no aparezca en la lista de eventos vinculables.

http://api.jquery.com/bind/

Cuestiones relacionadas