(reprise du message précédent)
Salut,
En fait, l'erreur vient plutôt du fait que l'événement de fermeture n'est pas déclenché sur le bon élément. Ce n'est pas sur l'image qu'il faut déclencher le fadeOut mais plutôt sur le li.
Par ailleurs, il est préférable de baser le script sur des classes plutôt que sur des tags afin d'éviter des comportements indésirables (Si on se base sur le tag "li", le script va agir sur chaque liste de la page et non seulement sur la galerie d'images).
Enfin, il faut aussi faire attention à ne pas trop figer le script en recourant à des méthodes comme "siblings" car à la moindre variation de structure, le script plante.
En somme, si on prend la structure suivante :
le script serait de ce type :
J'ai laissé ici le masquage, au départ, avec la méthode "hide" mais pour être sûr de n'avoir aucune apparition subite au chargement de page, il vaudrait mieux passer par la méthode du préchargement de styles via JS
Salut,
niuxe a écrit :Passer par un setTimeout n'est pas vraiment idéal et peu solide.
La logique est : si l'info-bulle (l'objet) est ouvert/visible, on maintient le "moteur"(setTimeOut). Si l'info-bulle (l'objet == rien/null), on referme.

En fait, l'erreur vient plutôt du fait que l'événement de fermeture n'est pas déclenché sur le bon élément. Ce n'est pas sur l'image qu'il faut déclencher le fadeOut mais plutôt sur le li.
Par ailleurs, il est préférable de baser le script sur des classes plutôt que sur des tags afin d'éviter des comportements indésirables (Si on se base sur le tag "li", le script va agir sur chaque liste de la page et non seulement sur la galerie d'images).
Enfin, il faut aussi faire attention à ne pas trop figer le script en recourant à des méthodes comme "siblings" car à la moindre variation de structure, le script plante.
En somme, si on prend la structure suivante :
...
<li class="hover">
<a href="http://www.bradeux.com/testNew/bradeux/la-mort-de-pepette-en-prison.html">
<img src="9782266199568.jpg" alt="illustration de Pépette en train de caner dans sa taule.">
</a>
<div class="info_bulle">
<h3>La mort de Pépette en prison</h3>
<p>résumé : Pépette en train de se lamenter sur son sort et récitant constamment ce poème en latin : lorem ipsum dolor sit amet, consectetur adipiscing elit.Etiam.</p>
<p>
<a href="http://www.bradeux.com/testNew/bradeux/product.php5">Plus d'infos</a>
</p>
</div>
</li>
...
le script serait de ce type :
$(function() {
$('.hover .info_bulle').hide();
$('.hover img').bind('mouseenter', function(e) {
var _oTarget = e.target;
while(_oTarget && !$(_oTarget).hasClass('hover')) {
_oTarget = _oTarget.parentNode;
}
$(_oTarget).find('.info_bulle').fadeIn();
});
$('.hover').bind('mouseleave', function(e) {
var _oTarget = e.target;
while(_oTarget && !$(_oTarget).hasClass('hover')) {
_oTarget = _oTarget.parentNode;
}
$(_oTarget).find('.info_bulle').fadeOut();
});
});
J'ai laissé ici le masquage, au départ, avec la méthode "hide" mais pour être sûr de n'avoir aucune apparition subite au chargement de page, il vaudrait mieux passer par la méthode du préchargement de styles via JS