IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Empêcher plusieurs événements


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Empêcher plusieurs événements
    Bonjour,

    Je me tourne vers vous après plusieurs tentatives ratées :
    Comment empêcher une ou plusieurs actions/événements jQuery se produire lorsqu'un événement est déjà en cours d’exécution mais pas forcément sur le même élément ?

    Exemple,

    J'ai un menu déroulant qui sur l'événement .hover() se déroule. Si je le survole 3x, cet événement se produira 3 fois.

    Autre exemple,

    J'ai une liste d'albums photos, quand je clique sur un album il se produit une sorte d'animation vidéo mais si je clique en même temps sur un autre album ou sur deux (ou plus encore), et bien l'animation se produira autant de fois que j'ai cliqué sur d'albums.


    Cdt

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    N'oubliez pas qu'un ID doit être unique.

    On peut supprimer un événement avec la méthode off() : http://api.jquery.com/off/

    On peut avoir un événement qui ne se produira qu'une seule fois avec la méthode one() : http://api.jquery.com/one/.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir danielhagnoul,

    Oui bien sûr tous mes identifiants sont uniques ; je ne pense pas qu'il y ait un soucis à ce niveau là.

    La fonction .one() ne correspond pas puisque l'événement doit se produire à chaque fois qu'on clique sur un l'élément, mais APRES l'animation vidéo.

    Alors quand il y a plusieurs éléments, elle se lance à chaque fois que je clique sans attendre que les autres aient terminé donc pour résumer, il devrait être impossible de lancer un événement similaire pendant cette animation vidéo.

    Il faut que j'explore la fonction .off() mais il ne me semble pas que je truove une réponse ici d'après ce que j'en ai vu.


    Merci

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Sans les codes (CSS, HTML, JS) pour examiner le problème...

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bon disons que le site est loin d'être terminé donc je voulais éviter de mettre un lien tout de suite.
    Voilà un lien temporaire http://valef.fr/sites/spvconfrancon/content/photos.php pour visualiser le problème.

    Cliquez sur plusieurs albums avec quelques secondes de décalage. Vous voyez que l'animation (il n'y a pas encore l'animation vidéo) se répète autant de fois.

    Autre exemple : cliquez sur une photo plusieurs fois de suite rapidement, le "chargement" se répète à chaque fois.

    Bonne chance

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    C'est un problème d'animation. Vous devez utiliser la méthode finish() pour terminer immédiatement les animations précédentes.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $('#loadingPhotos').finish().fadeIn(600, function() {
     
                    $('#photosSelectorParent').removeClass('photosSelectorOpen');
                    $('#gallery > ul').empty().load('_photos_album1.inc.php', function() {        
                        $('#gallery > ul > li:gt(0)').hide(0);                    
                    });
     
                    $(this).finish().delay(1000).fadeOut(1200, function() {
                        $('#photosSelectorParent').addClass('photosSelectorOpen');
                        $nextTimeoutId = setTimeout(function() {launchGallerySlider($ClickedPhoto);}, 6000);                    
                    });
     
                });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/08/2009, 07h36
  2. Attendre plusieurs événements
    Par Bastango dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 20/06/2009, 13h26
  3. Plusieurs évènements javascript pour une même action
    Par niacinside dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/06/2008, 14h56
  4. [AWT] Gestion de plusieurs évènements
    Par Nadd dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 05/12/2007, 12h35
  5. [MySQL] UNE date pour plusieurs dates et UN évènement pour plusieurs évènements...
    Par Aliosha dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/03/2007, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo