Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Si .live ya no funciona en jQuery, que debemos usar?

Estas en el tema de Si .live ya no funciona en jQuery, que debemos usar? en el foro de Jquery en Foros del Web. Hola, tengo un problema.. he usado el evento .live y ya no funciona... peor al usar on() tampoco funciona... Les explico, tengo lo siguente: Código ...
  #1 (permalink)  
Antiguo 30/09/2013, 19:11
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 16 años, 10 meses
Puntos: 11
Si .live ya no funciona en jQuery, que debemos usar?

Hola, tengo un problema.. he usado el evento .live y ya no funciona... peor al usar on() tampoco funciona...

Les explico, tengo lo siguente:

Código HTML:
<script>

    $(document).ready(function(){
        
           $("#dato").html("<a href='#' id='pintar'> Pintar  </a>");
  

           $("#pintar").on("click", funcion(){   $(this).css("color","#0000FF"); } );



}):

</script>

<div id="dato"></div>

Al cargar el documento inserto con jquery un html.. luego al hacer click en pintar se debería pintar... con jquery 1.7 funciona con .live pero con el 2.0 ya no funciona live, ni on... parece que cuando llamas con ajax o creas un html dinamico ya no funciona el click...

Como solucionar este problema?

Saludos...
  #2 (permalink)  
Antiguo 01/10/2013, 06:19
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.485
Antigüedad: 19 años, 4 meses
Puntos: 2113
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

En realidad si funciona. Tal vez sea más bien un problema de CSS, ya que aunque le pongas un color, al ser un enlace se sobreescribe esa información de color. Prueba a cambiar color por alguna otra propiedad y verás que funciona bien.
  #3 (permalink)  
Antiguo 01/10/2013, 11:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 15 años, 6 meses
Puntos: 2135
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

Lo que pasa es que la idea de on es que lo hagas sobre el selector padre, suponiendo que tienes un html así:
Código HTML:
Ver original
  1. <div id="parent">
  2.       <div class="childs">foo</div>
  3.       <div class="childs">foo</div>
  4.       <div class="childs">foo</div>
  5. </div>

Si antes lo que hacías era por ejemplo:
Código Javascript:
Ver original
  1. $('.childs').live('click', function() {
  2.     $(this).css('background-color', 'red');
  3. });

Al insertar/cambiar/borrar ".childs" usando AJAX o algún otro método funcionaba, no era lo adecuado, lo correcto es usar delegate:
Código Javascript:
Ver original
  1. $('#parent').on('click', '.childs', function() {
  2.    $(this).css('background-color', 'red');
  3. });

Así el evento solamente cae en el parent, y no tiene que estar inspeccionando usando live lo cual es más lento, es por eso que el uso de live() ya no se recomienda, porque traía una carga y lentitud que on ya no tiene.

Saludos.
  #4 (permalink)  
Antiguo 04/10/2013, 08:49
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 16 años, 10 meses
Puntos: 11
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

Hola a todos, gracias por sus respuestas...

he probado lo siguiente y aun no me funciona...

Cita:
<script>

$(document).ready(function(){

$("#dato").html("<a href='#' id='pintar'> Pintar </a>");


$("#pintar").on("click", funcion(){ alert('Hola'); } );



}):

</script>

<div id="dato"></div>
No muestra el mensaje "Hola"...
  #5 (permalink)  
Antiguo 04/10/2013, 08:58
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 8 años, 3 meses
Puntos: 578
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

Oye, pues utiliza bind() que es para versiones anteriores a 1.7 y no está deprecada
  #6 (permalink)  
Antiguo 04/10/2013, 22:30
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 16 años, 10 meses
Puntos: 11
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

estoy usando el 2.0
  #7 (permalink)  
Antiguo 05/10/2013, 05:04
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 8 años, 3 meses
Puntos: 578
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

Ok, SOLO UN DIMINUTO DETALLE... Se escribe function NO funcion !!!!!

Cita:
$("#pintar").on("click", funcion(){ $(this).css("color","#0000FF");
Además lo repites en todo el code y te olvidas alguna llave.

Gracias por el pasatiempo, me lo he pasado muy bien

Última edición por PHPeros; 05/10/2013 a las 05:29 Razón: nice catch ;)
  #8 (permalink)  
Antiguo 06/10/2013, 03:40
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 16 años, 10 meses
Puntos: 11
Respuesta: Si .live ya no funciona en jQuery, que debemos usar?

si, lo correjí, pero al final era un problema con FIREFOX

Etiquetas: ajax, funcion, html, javascript, live
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 21:25.