Bonjour,
Je me suis créé un petit script pour des infobulles en jQuery qui diffère dans son approche de celui de GrafikArt. J'utilise notamment un .each() :
Voir sur cette page de démo précisément ici.
Afin d'empêcher l'affichage des infobulles par défaut je supprime le contenu du title des liens au moment ou le pointeur de la souris passe sur le lien. Afin de ne pas m'embêter je pourrais me passer des valeurs de ces titles puisque je les ai tous en mémoire dans ma variable title, mais afin de garder l'accessibilité je les réinjecte quand la souris sort du lien :
Mon problème est le suivant : quand la souris "se promène" sur le lien, le contenu du title est susceptible de se réinjecter et l'infobulle par défaut réapparait alors.
J'ai pensé mettre un .delay() dans mon code, mais sans succès... Je ne vois pas ce que j'oublie :
Si vous pouviez m'auditer... Merci d'avance.
Je me suis créé un petit script pour des infobulles en jQuery qui diffère dans son approche de celui de GrafikArt. J'utilise notamment un .each() :
(function($){
$('.addtooltips a').each(function(){
var link = $(this);
var title = link.attr('title'); // Stockage de tous les titles dans une variable
link.css('position', 'relative');
link.on('mouseenter', function(){
if (title === undefined || title === '') return false; // Pas d'infobule si title manquant ou vide
link.append('<div class="tooltip">' + title + '</div>');
link.attr('title', ''); // Empêche l'affichage des infobules par défaut en vidant les titles
var tooltip = $('.tooltip');
tooltip.css({
'position' : 'absolute',
'opacity' : '0'
});
tooltip.animate({
'opacity' : '1'
}, 500);
});
link.on('mouseout', function(){
$('.tooltip').fadeOut(500);
link.attr('title', title); // Réinjecter la valeur du title pour l'accessibilité
});
});
})(jQuery);
Voir sur cette page de démo précisément ici.
Afin d'empêcher l'affichage des infobulles par défaut je supprime le contenu du title des liens au moment ou le pointeur de la souris passe sur le lien. Afin de ne pas m'embêter je pourrais me passer des valeurs de ces titles puisque je les ai tous en mémoire dans ma variable title, mais afin de garder l'accessibilité je les réinjecte quand la souris sort du lien :
link.attr('title', title); // Réinjecter la valeur du title pour l'accessibilité
Mon problème est le suivant : quand la souris "se promène" sur le lien, le contenu du title est susceptible de se réinjecter et l'infobulle par défaut réapparait alors.
J'ai pensé mettre un .delay() dans mon code, mais sans succès... Je ne vois pas ce que j'oublie :
link.delay(1000).attr('title', title);
Si vous pouviez m'auditer... Merci d'avance.