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 originaljQuery.fn.cp = function(url,data,precall,postcall){
this.each( function(){
if($(this).attr("title")=="x"){
return;
}
$(this).attr("title","x");
var im='<center><img id="il'+this.id+'" src="../images/loading.gif" alt="cargando" \/><br \/>'+
'<br \/><input type="button" value="Detener" id="btn'+this.id+'"\/><\/center>';
$(this).fadeOut("fast",function(){
var h=new ofset(); h=h.H(this.id);
$(this).html('<table width="100%" border="0" height="'+h+'" id="ttt"><tr><td valign="middle" id="td'+this.id+'">'+im+'<\/td><\/tr><\/table>');
$(this).show();
var conte=this;
$(this).before('<div id="d_aux'+this.id+'" style="display:none" ><\/div>');
$("#btn"+this.id).click(function(){
res.abort();
$(this).before("<span class='alerta'>Carga Detenida<\/span>");
$("#"+this.id+",#il"+conte.id+",#d_aux"+conte.id).remove();
$(conte).removeAttr("title");
return false;
})
var res=$.ajax({
type: "POST",
cache: false,
async: false,
url: url,
data: data,
}).responseText;
if(precall){res=precall(res);}
$("#d_aux"+this.id).html(res);
var h=new ofset(); h=h.H("d_aux"+this.id);
$("#td"+this.id).empty();
$(this).animate({height:h},"normal",function(){
$("#d_aux"+conte.id).fadeIn("fast");
$(this).remove();
$("#d_aux"+conte.id).attr("id",conte.id);
$(this).removeAttr("title")
if(postcall){postcall()}
});
});
});
}