2008-11-04 6 views
6

Tengo un menú con una animación en curso, pero quiero desactivar el clic mientras la animación está sucediendo.Usando jQuery, ¿cómo desactivo el efecto de clic en la pestaña actual?

<div></div> 
<div></div> 
<div></div> 

$("div").click(function() { 
    $(this).animate({height: "200px"}, 2000); 
    return false; 
}); 

Sin embargo, quiero desactivar todos los botones mientras el evento está sucediendo, y desactivar el div que se hizo clic.

Estaba pensando en agregar una clase a la div que hace clic en él y poniendo el clic sólo en los divs sin esa clase:

$("div").not("clicked").click(function() { 
    $(this).animate({height: "200px"}, 2000).addClass("clicked"); 
    return false; 
}); 

Pero esto no parece funcionar (creo que lo hace lógicamente) ?

Cualquier ayuda apreciada.

Saludos,
Steve

Respuesta

15
$("div").click(function() { 
    if (!$(this).parent().children().is(':animated')) { 
     $(this).animate({height: "200px"}, 2000); 
    } 
    return false; 
}); 
+1

W00t ! Resolvió mi problema 14 meses después. – Martin

+0

Gracias amigo! jQuery rocas! – VinnyG

0

Se podría hacer algo como esto ...

$(function() {   
    $("div").click(function() {     

     //check to see if any of the divs are animating 
     if ($("div").is(":animated")) { 
      alert("busy"); 
      return; 
     } 

     //whatever your animation is   
     var div = $(this); 
     div.slideUp(3000, function(){ div.slideDown(1000); }); 

    }); 

}); 

Esto animará el clic mientras cualquier div no está animando actualmente. Lo más probable es que ponga todos los divs en un contenedor y no solo se refiera a div, ya que podría afectar mucho más en la página que solo su menú,

0

Cómo dejo el <div> deshabilitado después de cliquear la animación ha ocurrido? He añadido una clase para el div que se ha hecho clic, pero haciendo lo siguiente no parece funcionar:

<div></div> 
<div class="active"></div> 
<div></div> 

$("div").not('active').click(function() { 
    if (!$(this).parent().children().is(':animated')) { 
    $(this).animate({height: "200px"}, 2000); 
    } 
    return false; 
}); 

Sospecho que me falta algo con respecto a la forma en que funciona .no

Cuestiones relacionadas