No funciona porque
.hover()
es un método y no un evento, por eso no ocurre nada al colocar
.on("hover")
. Lo que debes de hacer es añadir los nuevos elementos a un contenedor, por ejemplo, un
<div>
, delegarle a este los eventos
mouseover
y
mouseout
y mediante la propiedad
target
del objeto del evento (
event
), tomar al elemento sobre el cual se está produciendo el evento, verificamos si posee la clase que hayamos asignado a los nuevos elementos y si es así, ejecutamos las instrucciones.
Código Javascript
:
Ver original$("#id del contenedor")
.on("mouseover", function(event){
if (event.target.className == "foo"){
$(event.target).css("background", "red");
}
})
.on("mouseout", function(event){
if (event.target.className == "foo"){
$(event.target).css("background", "");
}
});
También puedes registrar ambos eventos a la vez y mediante la propiedad
type
del objeto del evento, detectas cuál de estos se produjo.
Código Javascript
:
Ver original$("#id del contenedor")
.on("mouseover mouseout", function(event){
if (event.type == "mouseover" && event.target.className == "foo"){
$(event.target).css("background", "red");
}
if (event.type == "mouseout" && event.target.className == "foo"){
$(event.target).css("background", "");
}
});
Ambas formas te pueden servir para trabajar con otros eventos.
Saludos