Foros del Web » Programando para Internet » Jquery »

Problema de carga con ajax+jQuery

Estas en el tema de Problema de carga con ajax+jQuery en el foro de Jquery en Foros del Web. Esta es la función.. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original jQuery ( '.btn-menu' ) . click ( function ( e ) {     ...
  #1 (permalink)  
Antiguo 23/03/2012, 01:44
Avatar de gatero  
Fecha de Ingreso: febrero-2012
Ubicación: Distrito Federal
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Problema de carga con ajax+jQuery

Esta es la función..

Código Javascript:
Ver original
  1. jQuery('.btn-menu').click(function(e){
  2.         e.preventDefault();
  3.         jQuery('#box').fadeOut('slow').empty()
  4.         jQuery.ajax({
  5.             url : jQuery(this).attr('href'),
  6.             success : function(data){
  7.                 jQuery('#box').html(data).fadeIn('slow');
  8.             }
  9.         });
  10. });

Funciona casi perfecto, el problema es que cuando se da clic sobre el botón(btn-menu), la primera vez carga bien, pero después de eso empieza a generar un parpadeo cada que se carga el contenido en el div box, alguien sabe como evitar ese extraño comportamiento? o alguien tiene el mismo problema?
  #2 (permalink)  
Antiguo 23/03/2012, 15:31
Avatar de gatero  
Fecha de Ingreso: febrero-2012
Ubicación: Distrito Federal
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Problema de carga con ajax+jQuery

Alguien dijo yo? :|
  #3 (permalink)  
Antiguo 02/04/2012, 14:48
 
Fecha de Ingreso: abril-2012
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Información Respuesta: Problema de carga con ajax+jQuery

El problema es que cuando se realiza una llamada a AJAX el DOM sufre modificaciones formateando de alguna manera y haciendo que los eventos queden obsoletos.

He leido varias maneras de volver a iniciar todos los binds para que esten disponibles despues de la carga mediante AJAX, y creo que la mejor es http://api.jquery.com/live/ para bindear el evento.

Asi...
Código Javascript:
Ver original
  1. jQuery('.btn-menu').live('click', function(e){
  2.         e.preventDefault();
  3.         jQuery('#box').fadeOut('slow').empty()
  4.         jQuery.ajax({
  5.             url : jQuery(this).attr('href'),
  6.             success : function(data){
  7.                 jQuery('#box').html(data).fadeIn('slow');
  8.             }
  9.         });
  10. });

Si hay una mejor manera, ami tambien me gustaria saberlo, saludos.

Etiquetas: ajax, funcion, html
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 01:03.