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 :

onclick sur td se déclenche deux fois


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut onclick sur td se déclenche deux fois
    bonjour,

    voila un bout de code tout simple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <div id="test" onclick="$('#txtid').val($('#txtid').val() + 'test/');">
        <table>
            <tr class="montr">
                <td class="montd" id="tdid" onclick="$('#txtid').val($('#txtid').val() + 'toto/');">toto</td>
            </tr>
            <tr>
                <td>titi</td>
            </tr>
            <tr>
                <td>tutu</td>
            </tr>
        </table>
    </div>
    <input id="txtid" />

    Si je passe le script $("#tdid").click(), le résultat sera dans mon input toto/test/test/.

    Le onclick de la DIV se déclenche 2 fois, pourquoi ?

    j'utilise la version 1.9.0 de jquery. J'ai essayé avec une 1.6.0, c'est le même effet.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Je n'irais pas jusqu'à dire que c'est un bug de jQuery, mais c'est bizarre.

    En tout cas j'ai testé avec du code JS pur (voir MouseEvent) et le problème ne se produit pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var click = new MouseEvent("click", {
      canBubble: true,
      cancelable: true,
      view: window,
    });
    document.getElementById("tdid").dispatchEvent(click);
    Et ça ne se produit pas avec jQuery quand tu remplaces les attributs onclick par des $("...").click(...).

    Code html : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <!DOCTYPE html>
    <html lang=fr>
    <head>
      <meta charset=utf-8>
      <title>Bouillonnement bizarre avec jQuery</title>
      <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
      <script> 'use strict';
      
      $(document).ready(function() {
      
        $("#test").click(function() {
          $('#txtid').val($('#txtid').val() + 'test/');
        });
        
        $("#tdid").click(function() {
          $('#txtid').val($('#txtid').val() + 'toto/');
        });
        
      });
      
      </script>
    </head>
    <body>
     
    <!-- <div id="test" onclick="$('#txtid').val($('#txtid').val() + 'test/');"> -->
    <div id="test">
        <table>
            <tr class="montr">
                <!-- <td class="montd" id="tdid" onclick="$('#txtid').val($('#txtid').val() + 'toto/');">toto</td> -->
                <td class="montd" id="tdid">toto</td>
            </tr>
            <tr>
                <td>titi</td>
            </tr>
            <tr>
                <td>tutu</td>
            </tr>
        </table>
    </div>
    <input id="txtid" />
     
    </body>
    </html>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    Slt,
    je pense que l'evt onclick est intercepté sur ta div vu que ta div englobe ton table (regarde du coté de la propagation des evts en js)...
    A quoi sert le onclick de ta div??

    ++

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $( "td" ).click(function( e ) {
    e.stopPropagation();
     
    });
    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 éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut
    Justement je veux que les 2 événements se déclenchent, pas seulement le TD.

    Mon problème c'est que le onclick de la DIV se déclenche 2 fois au lieux d'une seule.

    Je ne peux pas utiliser le ready() avec l'événement click() dans le bout de code sur lequel je travail.

    J'ai posté aussi sur le forum de JQuery en espérant avoir une explication.

    Je vais continuer à réfléchir à une autre solution et je vais étudier vos propositions.

  6. #6
    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
    je n'ai a priori pas de double click sur le div ...
    http://jsfiddle.net/fh67605y/
    ton souci doit provenir d'un autre bout de code ?
    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 !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/05/2015, 10h18
  2. Empêcher l'appui sur la même touche deux fois
    Par Devilju69 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/07/2014, 10h33
  3. Réponses: 6
    Dernier message: 20/02/2014, 15h56
  4. Réponses: 4
    Dernier message: 11/09/2007, 09h20
  5. onclick sur deux éléments superposés et IE6
    Par sovitec dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/12/2005, 13h56

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