2010-01-18 5 views
0

Je suis assez nouveau sur jQuery (et javascript d'ailleurs), donc c'est probablement juste quelque chose de stupide que je fais, mais ça m'ennuie vraiment! Tout ce que j'essaie de faire est d'ajouter une vitesse aux fonctions cacher et afficher de jQuery. Le code J'utilise est:Les effets jQuery ne fonctionnent pas lorsque j'ajoute une vitesse

for (var i in clouds) { 
    $(clouds[i]).click(function() { 
    $(this).hide(); 
    }); 
} 

cacher les nuages ​​quand ils sont cliqué sur le bouton, et

function fadeLogo(state) { 
    var element=document.getElementById('logo'); 

    if (state=='home') { 
     element.hide; 
     element.src='images/home.png'; 
     element.show; 
    } 

    else { 
     element.hide; 
     element.src='images/webNameLogo.png'; 
     element.show; 
    } 
} 

pour cacher une image, changer, puis le montrer à nouveau. Ceci est appelé par

onMouseOver=fadeLogo('home') onMouseOut=fadeLogo('logo') 

Cela fonctionne très bien, mais se produit instantanément. Chaque fois que j'essaie d'inclure une vitesse, que ce soit «lent», «rapide» ou en millisecondes, cela ne fonctionne pas, ils restent simplement dans leur état d'origine. Même ajouter hide() sans une vitesse provoque une erreur dans la console d'erreur de Safari:

TypeError: Le résultat de l'expression 'element.hide' [undefined] n'est pas une fonction.

Aucune erreur n'est signalée pour les nuages, ils restent assis là sans rien faire!

Espérons que quelqu'un peut vous aider!

Merci

EDIT:

ont maintenant cela pour le changement d'image:

$(function() { //This function fades the logo to the home button on mouseover 

    $('.logo').hover(function() { 
     $(this).fadeOut(
      'slow', 
      function() { 
       $(this).attr ('src','images/home.png').fadeIn('slow'); 
      }); 
    }, function() { 
     $(this).fadeOut(
      'slow', 
      function() { 
       $(this).attr('src','images/webNameLogo.png').fadeIn('slow'); 
      }); 
    }); 
}); 

qui s'estompe l'image et en aucun problème, mais ne change pas entre les 2 images. .. Oups, aurait dû être #logo. Vous avez que l'on travaille maintenant, sur les nuages ​​embêtants ...

Répondre

0

La méthode hide() est utilisée comme ceci:

for (var i in clouds) { 
    $(clouds[i]).click(function() { 
    $(this).hide('slow'); // or you can pass the milliseconds 
    }); 
} 

Quant à l'image que vous devriez faire cacher quelque chose comme ceci:

$('selector for your image').hide (
    'slow', 
    function() { 
     $(this).attr ('src', 'images/other.png').show ('slow'); 
    } 
); 
+0

Merci pour vos pensées. J'ai essayé d'ajouter "lent" aux nuages ​​comme vous l'avez suggéré, mais quand je ne fais rien ne se passe quand je clique sur eux. En ce qui concerne les images, j'ai édité mon post pour montrer le code complet que j'utilise (et remplacé par bascule avec cacher/montrer au cas où il se retrouve dans le mauvais état). Comme les nuages, ça marche, mais pas quand j'ajoute une vitesse ... – Mike

+0

Vous mélangez des méthodes jQuery et JavaScript. JavaScript n'a pas de méthode show/hide. Vous devez "convertir" votre objet DOM en un objet jQuery, vous pouvez ensuite utiliser ces méthodes. D'où viennent aussi les nuages? –

+0

Hmmm ok. J'ai défini un tableau contenant 4 classes de nuages ​​pour une manipulation ultérieure dans le script: var clouds = [". Cloud1", ". Cloud2", ". Cloud3", ". Cloud4"]; – Mike

Questions connexes