Ver Mensaje Individual
  #7 (permalink)  
Antiguo 25/11/2008, 17:04
Avatar de killerangel
killerangel
 
Fecha de Ingreso: septiembre-2007
Ubicación: Un punto en el espacio
Mensajes: 592
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: funcion con precallback y postcallback

PLUGIN JQUERY Q HACE PARA CARGAR CON EFECTO:(... o al menos eso trato de hacer :( ...)

1º el div original se desvanece y aparece tabla del mismo tamaño con una imagen de loading y un boton de 'Detener Carga'

2º una vez terminada la carga (q hago en un div oculto), efectua el precallback... por ejemplo si he cargado json y kiero manejar el resultado antes de mostrarlo.

3º redimensiono el div al tamaño del divo oculto, lo hago aparecer y elimino el actual y para q nadie sepa q paso le paso el id del div anterior al nuevo div

4º si hay un callback se efectua al final....

lo q esta como ofset y su metodo H es solo para calcular la altura del div oculto


Código javascript:
Ver original
  1. jQuery.fn.cp = function(url,data,precall,postcall){
  2.     this.each( function(){
  3.         if($(this).attr("title")=="x"){
  4.             return;
  5.         }
  6.         $(this).attr("title","x");
  7.         var im='<center><img id="il'+this.id+'" src="../images/loading.gif" alt="cargando" \/><br \/>'+
  8.         '<br \/><input type="button" value="Detener" id="btn'+this.id+'"\/><\/center>';
  9.         $(this).fadeOut("fast",function(){
  10.             var h=new ofset(); h=h.H(this.id);
  11.             $(this).html('<table width="100%" border="0" height="'+h+'" id="ttt"><tr><td valign="middle" id="td'+this.id+'">'+im+'<\/td><\/tr><\/table>');
  12.             $(this).show();
  13.             var conte=this;
  14.             $(this).before('<div id="d_aux'+this.id+'" style="display:none" ><\/div>');
  15.             $("#btn"+this.id).click(function(){
  16.                 res.abort();
  17.                 $(this).before("<span class='alerta'>Carga Detenida<\/span>");
  18.                 $("#"+this.id+",#il"+conte.id+",#d_aux"+conte.id).remove();
  19.                 $(conte).removeAttr("title");
  20.                 return false;
  21.             })
  22.             var res=$.ajax({
  23.                 type: "POST",
  24.                 cache: false,
  25.                 async: false,
  26.                 url: url,
  27.                 data: data,
  28.             }).responseText;
  29.             if(precall){res=precall(res);}
  30.             $("#d_aux"+this.id).html(res);
  31.             var h=new ofset(); h=h.H("d_aux"+this.id);
  32.             $("#td"+this.id).empty();
  33.             $(this).animate({height:h},"normal",function(){
  34.                 $("#d_aux"+conte.id).fadeIn("fast");
  35.                 $(this).remove();
  36.                 $("#d_aux"+conte.id).attr("id",conte.id);
  37.                 $(this).removeAttr("title")
  38.                 if(postcall){postcall()}
  39.             });
  40.         });
  41.     });
  42. }

__________________
Sueñen... y trabajen por hacer esos sueños realidad... de eso se construye el futuro!!
Me siento entre la ASP-ada y la PHP-red