11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à toutes et à tous !

Ah lala, après une longue bagarre avec jQuery, je me retrouve face à un petit problème d'ordre esthétique. Lorsque je clique sur un titre pour ouvrir le contenu d'une div, tout fonctionne à la perfection ! En revanche, si je double click, le toggle va se répéter.

Je pense que j'ai loupé quelque chose, et je me réfère donc à vous pour trouver une solution à ce petit problème.

Tout d'abord, commençons avec une vidéo pour avoir le problème sous le yeux.

http://www.youtube.com/watch?v=wn3cJ3uaEAI&feature=youtu.be

Maintenant, passons au code

jQuery

$('.show').click(function(){
	var showdiv = $(this).attr("id");
	var showcl = $(this).attr("class");
    $('.' + showdiv + '.cat').slideToggle(function(){
	 if ($('.' + showdiv + '.cat').is(":hidden") == true) {
                $('.' + showdiv + '.cat').slideUp("fast");
				$('.' + showdiv + '.cto').html('Show content');
				$('.' + showdiv + '.yt').css('background-image','');
				$('#' + showdiv).css('background-image','');
				return false;
            }
            else {
                $('.' + showdiv + '.cat').slideDown("fast");
				$('.' + showdiv + '.cto').html('Hide content');
				$('.' + showdiv + '.yt').css('background-image','url(images/bg5.png)');
				$('#' + showdiv).css('background-image','url(images/toggle-o.png)');
				return false;
            }
		});
});



Merci d'avance !
Modifié par McMillan (20 Jun 2013 - 13:49)
Tu peux vérifier si ton div est en train d'être animé et si c'est le cas tu ne fais (tu quittes la fonction).


...
if ($('.' + showdiv + '.cat').is(":animated")) {
  return false;
}

$('.' + showdiv + '.cat').slideToggle(function(){
...
Ce petit bout de code fonctionne du tonnerre ! Quel idiot de ne pas y avoir penser plus tôt !
(ma cervelle à besoin de repos).

Merci jb_gfx pour ta réactivité Smiley cligne
J'inspecte ton code, j'avais commencé à me pencher sur le 'propagation' aujourd'hui.

Je vois aussi que tu as utilisé un code plus clair, et plus simple que mon "paté" avec mes variables.
Je me permet de le gardé sous le coude, mais j'ai fais des class différentes pour une assignation différente entre certaines div. (hide, show, background, etc)
Je vais voir si je peux éclaircir mon code avec le tiens !

Merci d'avoir passé un peu de temps dessus en tout cas !
Modifié par McMillan (19 Jun 2013 - 09:39)