Foros del Web » Programando para Internet » Jquery »

On en jquery

Estas en el tema de On en jquery en el foro de Jquery en Foros del Web. Os pongo en situacion, al pretar un boton ejecuto la funcion nuevoTag que crea un elemento .tag dentro de #tagsSeleccionados como veis en la funcion. ...
  #1 (permalink)  
Antiguo 15/01/2012, 15:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 14 años, 4 meses
Puntos: 2
On en jquery

Os pongo en situacion, al pretar un boton ejecuto la funcion nuevoTag que crea un elemento .tag dentro de #tagsSeleccionados como veis en la funcion. En un principio no hay ningun .tag hasta que se ejecuta por primera vez.

quiero que cuadno se ejecute nuevoTag y se cree el .tag se le asocie el evento que veis.. el alert por ejemplo



No funciona esto:

Código Javascript:
Ver original
  1. function nuevoTag(tag)
  2.    {
  3.        $("#tagsSeleccionados").append("<div class='tag'><input type='hidden' name='tags[]' value='"+tag+"'>"+tag+"<img src='' alt='Eliminar'></div>");
  4.      
  5.        
  6.     }
  7.    
  8. $("#tagsSeleccionados .tag").on("click",function(){alert("elimi");});

me funciona esto:

Código Javascript:
Ver original
  1. function nuevoTag(tag)
  2.    {
  3.        $("#tagsSeleccionados").append("<div class='tag'><input type='hidden' name='tags[]' value='"+tag+"'>"+tag+"<img src='' alt='Eliminar'></div>");
  4.        $("#tagsSeleccionados .tag").off("click");
  5.        $("#tagsSeleccionados .tag").on("click",function(){alert("elimi");});
  6.     }

por lo que tenia entendido al usar on de jquery pillaba automaticamente los cambios... que falla??
  #2 (permalink)  
Antiguo 15/01/2012, 16:14
Avatar de Dnielf  
Fecha de Ingreso: diciembre-2008
Ubicación: 127.0.0.1
Mensajes: 72
Antigüedad: 16 años
Puntos: 14
Respuesta: On en jquery

Para el método on se requiere que el elemento al que se le asigna el evento exista en el DOM, ya luego puede colocar que tipo de nodos hijos son los que propagan el evento, esto para evitar asignar events listeners a muchos elementos y mejor resumirlos a una propagación a su elemento padre, es decir es mejor que 1000 <li> propaguen su evento al padre que a cada <li> se le asigne el event listener (similar a un ejemplo en la documentación).

Con lo que tu código sería así :

Código Javascript:
Ver original
  1. $("#tagsSeleccionados ").on("click",".tag",function(){alert("elimi");});
__________________
"Si aprender quieres, librerías usar no debes"
  #3 (permalink)  
Antiguo 17/01/2012, 02:55
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: On en jquery

gracias perfecto ;)
  #4 (permalink)  
Antiguo 27/08/2012, 14:32
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: On en jquery

Excelente explicación, me funcionó perfecto el método on. Gracias

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.