Tengo un script que estoy desarrollando que crea un efecto de tipo botón deslizante. Cinco div's están situados uno al lado del otro con un enlace cada uno. Cuando se hace clic en uno de esos DIVS, el contenido asociado se expande y el resto de las Div se cierran.Evite que Javascript se ejecute dos veces
El problema es que si un usuario hace clic dos veces en la Div mientras carga o hace clic en otra Div en sucesión rápida, comienzan a aparecer grietas.
Me pregunto si solo sería posible permitir que la consulta se ejecute una vez y esperar hasta que se complete en lugar de ponerla en la cola.
Aquí está mi código actual, si es basura siente libre de hacer comentarios sobre cómo podría mejorarlo ... No soy el mejor en Javascript/jQuery: P
function mnuClick(x){
//Reset all elements
if($('#'+x).width()!=369){
$('.menu .menu_Graphic').fadeOut(300);
$('.menu_left .menu_Graphic').fadeOut(300);
$('.menu_right .menu_Graphic').fadeOut(300);
$('.menu').animate({width: "76px"},500);
$('.menu_left').animate({width: "76px"},500);
$('.menu_right').animate({width: "76px"},500);
}
var ElementId = '#' + x;
$(ElementId).animate({
width: 369 + "px"
},500, function(){
$(ElementId + ' .menu_Graphic').fadeIn(300);
});
}
Gracias de antemano, Chris.
+1 justo lo que iba a decir, simplemente tiene una variable que realiza un seguimiento de si el evento se ejecutó, lo inicializa antes de comenzar el procesamiento (por lo que desactiva todos los demás eventos). – Jakub
Muchas gracias. Gran solución pero muy simple :) – Chris