Domanda

ok, sto cercando di animare qualcosa a diverse altezze se un id selezionato ha una classe selezionata. ho il seguente codice.

 function myfunction() {


   if ($('#homebutton').hasClass("active"));
   {
    $('#content').animate({height: "240px",opacity: 1}, 100 , hideLoader());
   }

   if ($('#showbutton').hasClass("active"));
   {
   $('#content').animate({height: "79px",opacity: 1}, 200 , hideLoader());
   }

   if ($('#aboutbutton').hasClass("active"));
   {
   $('#content').animate({height: "527px",opacity: 1}, 300 , hideLoader());}

   if ($('#contactbutton').hasClass("active"));
   {
   $('#content').animate({height: "1040px",opacity: 1}, 400 , hideLoader());
   }
}

che sta concatenando le animazioni l'una dopo l'altra, qualunque cosa io faccia clic, finisce per essere alta 1040px cosa sto sbagliando ??

ha provato a cambiarlo in

{if ($('#homebutton').hasClass("active"));
$('#content').animate({height: "240px",opacity: 1}, 100 , hideLoader());
}

senza alcun effetto

È stato utile?

Soluzione

Hai separato le istruzioni if ??dal codice nella riga successiva. L'unica cosa che esegui quando la condizione è vera è un'istruzione vuota.

Cambia questo:

if ($('#homebutton').hasClass("active"));

in:

if ($('#homebutton').hasClass("active"))

e lo stesso per gli altri tre.

Altri suggerimenti

Puoi ripulirlo molto sfruttando il bel linguaggio che Javascript è:

$.each({
  '#homebutton': { height: '240px', speed: 100 },
  '#showbutton': { height: '79px', speed: 200 },
  '#aboutbutton': { height: '527px', speed: 300 },
  '#contactbutton': { height: '1040px', speed: 400 }
}, function(selector, controls) {
  if ($(selector).hasClass('active'))
    $('#content').animate({height: controls.height, opacity: 1}, controls.speed, hideLoader());
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top