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 :

utilisation de stop propagation pour double onclick


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Par défaut utilisation de stop propagation pour double onclick
    Salut à tous ...
    j'ai un petit souci...

    en fait j'ai un tableau généré en ajax avec une action onclick sur chaque ligne tr
    cette action déclenche le changement de page (comme un lien vers une autre page en fait)

    dans chaque ligne j'ai un td qui contient une image sur laquelle j'ai aussi une action onclick (qui permet de déclencher la suppression de la ligne

    problème : lorsque je clique sur l'image, les deux actions onclick sont exécutées car le navigateur considère que j'ai cliqué non seulement sur l'image mais aussi sur la ligne ...
    Ce qui est vrai dans l'absolu d'ailleurs.

    J'aimerai donc empécher le onclick associé au tr de se déclencher lorsque je clique sur mon image (et uniquement dans ce cas)

    je pense qu'il doit falloir utiliser un truc du genre stop propagation mais alors je ne sais pas comment ...

    voili voilo
    si vous avez une idée

    merki

    un petit exemple de code html à copier coller pour voir ce que ça donne
    Pensez à corriger le mot onclick qui fait planter l'envoi de messages sur le forum



    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
    27
    28
     
    <sc r i p t>
    	f unction clicktr(texte) {
    		alert (texte);
    	}
    	function clickimg(texte) {
    		alert (texte);
    	}
    </s c r i p t>
     
     
    <body>
    <table border="1" cellspacing="1" cellpadding="4">
      <tr o nclick="clicktr('click tr');">
        <td>ma</td>
        <td>ligne</td>
        <td>1</td>
        <td><img src="http://www.institut-instantbeaute.fr/jscalendar/delete.gif"  o nclick="alert('click img');"/></td>
      </tr>
      <tr o nclick="clickimg('click tr');">
        <td>ma  </td>
        <td>ligne</td>
        <td>2</td>
        <td><img src="http://www.institut-instantbeaute.fr/jscalendar/delete.gif"  o nclick="alert('click img');" /></td>
      </tr>
    </table>
    </body>
    </html>

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Par défaut
    je regarde sur le net mais je ne peux pas utiliser les solution proposées

    en fait ils donnent ça comme exemple


    $("tr").click(function(event){
    alert("This is : " + $(this).text());
    // Comment the following to see the difference
    event.stopPropagation();
    });
    en utilisant l'objet event...
    mais dans mon cas je ne peux pas programmer ça directement dans le code jquery avec un listener car la fonction appelée par mon onclick est différente selon le contexte du tableau généré... et elle pass à chaque fois des paramètres différents... donc je ne peux pas faire quelque chose de générique... d'où l'insertion du onclick directement dans le html

    ça complique les choses...

    j'ai aussi vu cette solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="alert(2);event.stopPropagation ? event.stopPropagation() : event.cancelBubble
    mais elle ne marche pas sous IE (comme dh'ab...)

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Par défaut
    Raaah !!!
    j'ai trouvé la soluce avec des éléments HTML déjà dans le dom ... mais pour tout ce qui est loadé en ajax ... ça marche pas

    voir fichier joint....

    HELP
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Par défaut
    une solution palliative qui ne permet pas d'utiliser live mais avec le onclick="clickimg('bla', event)" directement dans le html généré ça marche ...

    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
    	function clicktr(texte, e) {
    		$('#log').append(texte+'<br>');
    		return false;
    	}
    	function clickimg(texte, e) {
    		$('#log').append(texte+'<br>');
    		stopEvent(e);		
    	}
     
     
    	function stopEvent(e) {
    		if(!e) var e = window.event;
     
    		//e.cancelBubble is supported by IE - this will kill the bubbling process.
    		e.cancelBubble = true;
    		e.returnValue = false;
     
    		//e.stopPropagation works only in Firefox.
    		if (e.stopPropagation) {
    			e.stopPropagation();
    			e.preventDefault();
    		}
    		return false;
    	}
    ++

Discussions similaires

  1. [Shell][sed]utilisation d'un sed pour gérer des doubles quotes
    Par bstevy dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 06/03/2015, 11h03
  2. Double click obligatoire sur un div pour que onclick fonctionne
    Par gestgm dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/05/2014, 16h36
  3. Réponses: 0
    Dernier message: 10/11/2010, 09h40
  4. Double action pour un OnClick
    Par koKoTis dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/08/2006, 02h25

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