2010-09-28 3 views
1

J'ai une liste de divs (exemple simplifié)Afficher div sur mouseover sur une autre div et fermez toutes les autres divs avec la même classe

<div class="title">text</div> 
<div class="description">text</div> 
<div class="title">text</div> 
<div class="description">text</div> 
<div class="title">text</div> 
<div class="description">text</div> 

.description est caché à la page charge quand je passe la souris sur un titre je montre la description de ce titre, lorsque je survole un autre titre, je montre la description de ce titre, mais ce que je veux aussi faire est de cacher ce dernier .description qui était ouvert.

J'ai essayé avec mouseout, mouseleave etc. mais je n'ai pas réussi à le faire fonctionner. Aucune suggestion?

$('.title').mouseover(function() { 
      $(this).next().fadeIn('fast'); 
     }); 

     $('.title')..mouseleave(function() { 
      $(this).next().slideOut('fast'); 
     }); 

Avec ça, je cache la description si je survole le même titre mais pas d'autres titres.

jQuery.fn.fadeToggle = function (speed, easing, callback) { 
     return this.animate({ opacity: 'toggle' }, speed, easing, callback); 
    }; 

    $('.title').mouseover(function() { 
      $(this).next().fadeToggle('fast'); 
    }); 

Répondre

0

Vous pouvez spécifier leur sélecteur de classe pour les cacher tout, de cette manière que l'un d'entre eux sera affiché à la fois:

$('.title').mouseover(function() { 
    $('.description').hide(); 
    $(this).next().fadeIn('fast'); 
    }); 
+0

ahh trop facile, merci (attendre quelques minutes à la solution accepter) – martin

+2

une fois que je l'ai commencé à montrer tout description il y en aura toujours un, y a-t-il un moyen de masquer toutes les descriptions si je n'ai pas eu la souris sur un .title ou .description depuis un certain temps? – martin

+0

@martin: Vous pouvez utiliser la méthode mouseleave de manière similaire et cacher tous les éléments de description comme je l'ai montré :) – Sarfraz

0

Vous avez fait une faute de frappe ici:

$('.title')..mouseleave(function() { 

Il y a deux périodes.

Espérons que ça aide.

0

Votre code fonctionne si vous utilisez la bonne fonction. Il y a aucune méthodeslideOut. Utilisez soit fadeOut() ou slideUp(), par exemple:

$('.title').mouseover(function() { 
    $(this).next().fadeIn('fast'); 
}); 

$('.title').mouseleave(function() { 
    $(this).next().fadeOut('fast'); 
}); 

Voir: http://jsfiddle.net/Tjcvz/

+0

merci pour le commentaire, je n'ai pas vu votre réponse jusqu'à ce que j'ai essayé la solution Sarfraz. – martin

Questions connexes