Partage
  • Partager sur Facebook
  • Partager sur Twitter

jQuery $(selecteur).click fonctionne qu'une fois

Sujet résolu
    15 janvier 2011 à 16:23:21

    Bonjour,
    je cherche à mettre une transition animée entre mes pages.
    ma page contient "un livre", si on clique sur les coins de page ça lance une action.
    voici le code que j'ai mais en place dans le .ready() :
    $('.corner_page_right').click(function(){cpt++;
    	pageSuivante();
    	});
    
    	$('.corner_page_left').click(function(){
    		pagePrecedente();
    });
    


    le problème c'est que le code s'execute qu'une fois.
    Genre je clique, quand l'animation finit, le hover sur l'image est bien détéctée mais le click ne fait plus rien.
    Donc impossible de tourner les page plusieurs fois.
    la fonction pageSuivante (comme page précédente) ne fait que déplacer des blocs div et change leur width via des animate, et des .queue().

    Ma question est : est-ce que l'utilisation de la file queue peut bloquer le fonctionnement que j'ai mis en place?

    J'ai beau chercher je ne comprends pas pourquoi ça fait celà
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2011 à 16:50:10

      Au pif, utilise live() pour placer ton événement click. Voir doc jQuery.
      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2011 à 19:19:54

        salut, merci de ta réponse.
        j'ai déjà tester live, de cette manière :
        $('.corner_page_right').live('click',function(){cpt++;
        	pageSuivante();
        	});
        

        Et le résultat est le même, il n'execute la fonction qu'une seule fois.
        L'animate pourrait-il poser souci? enfin je veux dire lancer plusieurs animate

        <EDIT>
        J'ai trouvé, en fait j'utilisai mal la fonction .queue() de jQuery.
        $('#page_left').queue(function(){
        		$(this).animate({width : '0px',left: '390px'},1200);
        		$('.corner_page_left').queue(function(){
        				$(this).animate({width : '0px'},1200);
        				$(this).dequeue();
        				}).queue(function(){
        						$(this).hide();
        						$(this).dequeue();
        					});
        		$('.corner_page_right').hide();
        		$(this).dequeue();
        	});
        

        J'avais oublié de lancer un dequeue() à la fin de la fonction.
        </EDIT>

        merci pour la réponse
        • Partager sur Facebook
        • Partager sur Twitter

        jQuery $(selecteur).click fonctionne qu'une fois

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown