Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/01/2013, 14:41
camilocalderont
 
Fecha de Ingreso: diciembre-2011
Ubicación: Bogotá
Mensajes: 47
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Optimizar codigo jquery...

Cita:
Iniciado por ricardomz Ver Mensaje
Amigos,

Soy nuevo en jQuery....
Código:
$("#inicio").mouseover(function() {
							$("#logo_image").fadeOut(0).css({"background-position":"0px -91px"}).fadeIn("slow");

}).mouseout(function(){
							$("#logo_image").fadeOut(0).css({"background-position":"0px 4px"}).fadeIn("slow");
						  });

Hola Amigo, Yo Tampoco es que sea un Experto pero si veo muchos errores:



lo primero para optimizar es en los eventos:

1. las funciones mouseover y mouseout se pueden remplazar por la funcion
[URL="http://api.jquery.com/hover/"]hover(over,out)[/URL] donde el primer parametro corresponde al mouseOver y el segundo parametro corresponde al mouseOut

2. las animaciones fadeIn y fadeOut se puede remplazar por [URL="http://api.jquery.com/fadeToggle/"]fadeToggle(in,out)[/URL]

donde el primer parametro lanza una funcion para el efecto fadeIn, y el segundo para el fadeOut

yo recomiendo en vez de escribir una funcion anonima, escribir un nombre normal y abajo escribir la funcion para mi es mas organizado

es decir en vez de escribir:
Código:
algo.mouseover(function() {
//lo que hace la funcion
});
me parece mejor escribir

Código:
algo.mouseover(nombre_funcion);

function nombre_funcion()
{
   //lo que hace la  funcion
}
de lo que pude "entender" del codigo tengo esta propuesta:

Código:
$(document).ready(function() {
	
	$("#inicio").hover(fover,fout)
	$("#contacto").hover(fover,fout)
	$("#nosotros").hover(fover,fout)
	$("#habilidades").hover(fover,fout)
	
	function fout()
	{
		$(this).fadeOut(0).css({"background-position":"0px 4px"}).fadeIn("slow")
		
	}
	
	function fover()
	{
		boton=$(this).attr("id")
		v=-91
		switch(boton)
		{
			case "inicio":
				$(this).fadeOut(0).css("background-position","0px "+v+"px")
			break;
			case "contacto":
				v=v-95
				$(this).fadeOut(0).css("background-position","0px "+v+"px")
			break;
			case "nosotros":
				v=v-190
				$(this).fadeOut(0).css("background-position","0px "+v+"px")
			break;
			case "habilidades":
				v=v-285
				$(this).fadeOut(0).css("background-position","0px "+v+"px")
			break;									
		}
	}
    
});
con esto se logra centrar todo en solo dos funciones una fover y la otra fout,

como para fout es lo mismo en todos los botones entonces no importa diferenciarlos y se utiliza simplemente $(this)

pero en cuanto a fover se tiene que saber cual boton lanzo el evento entonces se utiliza la funcion attr("id") para saber por medio de un switch cual boton fue, ahora la variable v=-91 es el vertical que va cambiando en el background-position.


Espero te sirva de Ayuda
__________________
Camilo Calderon Tapia
www.pau.com.co