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

JavaScript Discussion :

Supprimer un evenement


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Par défaut Supprimer un evenement
    Bonjour,

    J'ai un problème en javascript au sujet des évenements. J'assigne des evènements à des objets grâce à cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function addEvent(obj,event,fct){
         if(obj.attachEvent)
            obj.attachEvent('on' + event,fct);
         else
            obj.addEventListener(event,fct,true);
    }
    Dans mon cas je crée un évenement comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addEvent(onglet,"mouseout",function (){onglet.style.backgroundImage='url(../../images/bouton_on.png)'; onglet.style.cursor='normal';});


    Maintenant à un moment je ne veux plus cet évènement mais le supprimer. J'ai essayé plusieurs solution mais ça na pas marché.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addEvent(onglet,"mouseout",function (){void(0);});
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Habituellement, ce type de fonction est accompagné d'une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function removeEvent(obj,event,fct){
        if (obj.detachEvent) {
            obj.detachEvent("on" + event, fct);
        }
        else {
            obj.removeEventListener(event, fct, true);
        }
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    arf add ....
    = ajout

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function removeEvent(obj,event){
    obj.event=function(){void(0);};
    }

    reste à savoir si tu cherche à supprimer juste une fonction ou carrément l'évènement entier.

    La solution de Beef est plus selective ^^
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Par défaut
    Par contre, l'utilisation de fonction anonyme avec addEvent/removeEvent empêche de supprimer la fonction associée, il est nécessaire de nommer les fonctions pour pouvoir ensuite les supprimer.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function addEvent(obj,event,fct){
         if(obj.attachEvent)
            obj.attachEvent('on' + event,fct);
         else
            obj.addEventListener(event,fct,true);
    }
     
    function removeEvent(obj,event,fct){
        if (obj.detachEvent) {
            obj.detachEvent("on" + event, fct);
        }
        else {
            obj.removeEventListener(event, fct, true);
        }
    }
     
    function toto()
    {
        alert("toto");
    }
     
    /* Pour ajouter la fonction à l'événement */
    addEvent(onglet,"mouseout",toto);
     
    /* Pour supprimer la fonction à l'événement */
    removeEvent(onglet,"mouseout",toto);
    @SpaceFrog
    function removeEvent(obj,event){
    obj.event=function(){void(0);};
    }
    Comment ça marche ?

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par BaBeuH Voir le message
    Par contre, l'utilisation de fonction anonyme avec addEvent/removeEvent empêche de supprimer la fonction associée
    Non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function addEvent(obj,event,fct){
         if(obj.attachEvent)
            obj.attachEvent('on' + event,fct);
         else
            obj.addEventListener(event,fct,true);
    }
     
    function removeEvent(obj,event,fct){
        if (obj.detachEvent) {
            obj.detachEvent("on" + event, fct);
        }
        else {
            obj.removeEventListener(event, fct, true);
        }
    }
     
    /* Pour ajouter la fonction à l'événement */
    addEvent(onglet,"mouseout",function(){alert('toto');});
     
    /* Pour supprimer la fonction à l'événement */
    removeEvent(onglet,"mouseout",function(){alert('toto');});
    Fonctionne aussi, le seul impératif est que ce 3e paramètre soit identique dans le add et dans le remove
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Par défaut
    Citation Envoyé par BaBeuH Voir le message
    Par contre, l'utilisation de fonction anonyme avec addEvent/removeEvent empêche de supprimer la fonction associée, il est nécessaire de nommer les fonctions pour pouvoir ensuite les supprimer.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function addEvent(obj,event,fct){
         if(obj.attachEvent)
            obj.attachEvent('on' + event,fct);
         else
            obj.addEventListener(event,fct,true);
    }
     
    function removeEvent(obj,event,fct){
        if (obj.detachEvent) {
            obj.detachEvent("on" + event, fct);
        }
        else {
            obj.removeEventListener(event, fct, true);
        }
    }
     
    function toto()
    {
        alert("toto");
    }
     
    /* Pour ajouter la fonction à l'événement */
    addEvent(onglet,"mouseout",toto);
     
    /* Pour supprimer la fonction à l'événement */
    removeEvent(onglet,"mouseout",toto);
    @SpaceFrog


    Comment ça marche ?
    Je ne sais pas pourquoi mais l'evenement ne se créé pas

    edit : si mais par contre si on veux créé une fonction de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function toto(test)
    {
        alert(test);
    }
    Comment on crée l'evenement? car addEvent(onglet,"mouseout",toto(1)); ne marche pas

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

Discussions similaires

  1. Supprimer un evenement
    Par bnohit dans le forum jQuery
    Réponses: 2
    Dernier message: 31/05/2011, 23h21
  2. supprimer evenement onclick => detachEvent gadget pour sidebar
    Par calitom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/01/2009, 14h50
  3. Comment supprimer un evenement plus utilisé?
    Par badack dans le forum NetBeans
    Réponses: 2
    Dernier message: 21/04/2008, 14h13
  4. [NetBeans] Supprimer un evenement
    Par scifire dans le forum NetBeans
    Réponses: 4
    Dernier message: 14/02/2006, 23h10
  5. Evenement pour caractere ajouté ou supprimé dans un input ?
    Par Jerem' dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/02/2005, 14h11

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