begin process at 2012 05 29 14:36:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

Framework

 > 

Autre Framework

 > 

Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.

vendredi 17 avril 2009 à 00:14:57 | Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.

Titouu

Bien le bonsoir à vous.
Premier post sur le forum de ma part ;) .

Je rencontre un problème avec l'utilisation du framework jquery.
Contexte : Dans mon exemple, j'ai un tableau html contenant 2 colonnes : Titre et Modification.
La colonne modification contient à chaque ligne un bouton "Modifier".
Ce bouton, lorsque l'on clique dessus, permet de remplacer le titre qui lui correspond par un champ de saisie, ainsi que de remplacer "Modifier" par "Valider".
Lorsque l'on clique sur "Valider", le champ de saisie disparait et la valeur est stockée dans la case. Le bouton "Modifier" réapparait à la place de "Valider".
Problème :
Le script fonctionne, sauf qu'après une modification, le bouton "Modifier" régénéré côté client ne fonctionne plus!!
Quelque chose m'échappe donc, peut-être une incompréhension sur certains mécanismes de fonctionnement de la librairie.
Quelqu'un pourrait-il m'aider ?

Je vous joins mon code source :

Javascript :
$(document).ready(function(){   
   
    //Evenement si on clique "Modifier"
    $('.btnModifier').click(function()
    {
        //On récupère l'objet du DOM correspondat à la ligne du tableau à modifier :
        var objLigneModif = $(this).parent().parent();
       
        //On sauvegarde la valeur actuelle du titre :
        var titreActuelLigne = objLigneModif.children(".tabLigneTitre").html();
       
        //On modifie le contenu de la ligne :
        objLigneModif.children(".tabLigneTitre").html("<input name ='txtLigneTitre'"+
                                                      "          class='classLigneTitre'"+
                                                      "          type = 'text'"+
                                                      "          value= '"+titreActuelLigne+"'/>"
                                                      );
        objLigneModif.children(".tabLigneModif").html("<a class='btnValider' href='#'>Valider</a>");
       
        //Evenement si on clique sur"VALIDER"
        $(".btnValider").click(function()
        {
            //On modifie le contenu de la ligne :          objLigneModif.children(".tabLigneTitre").html(objLigneModif.children(".tabLigneTitre").children(".classLigneTitre").val());
                                                         
            objLigneModif.children(".tabLigneModif").html("<a class='btnModifier' href='#'>Modifier</a>");           
        });
    });
});

Page Html :
    <table id="tableauPrincipal">
        <thead>
        <tr>
            <th>Titre :</th>
            <th>Modification :</th>
        </tr>
        </thead>
       
        <tbody>
        <tr id="ligne_2">
            <td class='tabLigneTitre'>
                Titre numéro 2 :
            </td>
            <td class='tabLigneModif'>
                <a class='btnModifier' href='#'>Modifier</a>
            </td>
        </tr>
        <tr id="ligne_1">
                <td class='tabLigneTitre'>
                    Titre numéro 1 :
                </td>
                <td class='tabLigneModif'>
                    <a class='btnModifier' href='#'>Modifier</a>
                </td>
        </tr>
        </tbody>
    </table>

En vous remerciant par avance,
Cordialement,
Titouu
samedi 18 avril 2009 à 11:58:38 | Re : Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.

PetoleTeam

Membre Club
Bonjour,
Aucune maitrise de JQUERY de ma part, je te donnerais donc un avis général.
Le comportement est normal, la ligne
$(document).ready(function(){...
signifie apparament que c'est au chargement que cette initialisation à lieu, donc tous les éléments existants au début sont concernés mais pas ceux crées après.

- Une solution est de changer d'approche en mettant des éléments en display:none et de les Afficher/Cacher en fonction de la demande...

- Une autre est de reprendre la fonction d'initialisation à chaque changement...
à voir la faisabilité avec JQUERY...
;O)
samedi 18 avril 2009 à 16:38:22 | Re : Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.
samedi 18 avril 2009 à 17:19:14 | Re : Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.

Titouu

Arf, je vois qu'il y a eu un problème d'envoie de la réponse...
Je reprend donc à peu près ce que j'avais marqué :

PetoleTeamdit :
- Une solution est de changer d'approche en mettant des éléments en display:none et de les Afficher/Cacher en fonction de la demande...

REPONSE :
Oui, je vois très bien ce que tu veux dire, je pense aussi que cela devrait fonctionner.
Le problème, c'est que l'utilisation que je compte avoir est un peu plus complexe que l'exemple que je vous ai donné.
En effet, il y a également une fonctionnalité "Ajouter" qui ajoute de nouvelles lignes au tableau html (tout est stocké dans une base de donnée , et j'utilise AJAX pour envoyer des requête HTTP Request à des pages php qui se charge de manipuler la base..). Bref, je vais être obligé de créer de nouvelle ligne dans mon tableau.
C'est pour celà que j'ai vraiment besoin de trouver un moyen pour que le principe de fonctionnement soit celui-ci, et non pas avec des display:none...

PetoleTeamdit :
- Une autre est de reprendre la fonction d'initialisation à chaque changement...
à voir la faisabilité avec JQUERY...


REPONSE :
J'ai déja essayé quelque chose comme celà. J'ai crée une fonctionnement à part qui regrouppait tout les évenements click de jquery puis je l'appelai dans le document ready ainsi
$(document).ready(function(){
     fctEvenement();
});
Mais également à la fin de mon évenement click sur "modifier", mais çà ne fonctionnait pas..

PetoleTeamdit :
donc tous les éléments existants au début sont concernés mais pas ceux crées après.

REPONSE :
Ce que je ne comprend pas, c'est que le bouton "valider" est généré après, et pourtant il fonctionne très bien...:/

En tout cas merci de ton attention, en esperant qu'on va trouver une solution ;)
PS: y-a-t'il moyen d'éditer les messages ???
Titouu
dimanche 19 avril 2009 à 14:53:30 | Re : Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.

PetoleTeam

Membre Club
Bonjour,
Ce que je ne comprend pas, c'est que le bouton "valider" est généré après, et pourtant il fonctionne très bien.
pas les billes pour tester et répondre.

Encore une autre approche, dans la même fonction d'initialisation tu testes le nodeValue de ton lien et suivant la valeur, VALIDER ou MODIFIER tu fait ce que tu as à faire.
;O)
lundi 27 avril 2009 à 12:39:56 | Re : Jquery_Problème de réutilisation d'un évènement click sur un élément supprimé puis remis.

Titouu

Réponse acceptée !
J'ai trouvé la solution il y a quelques jours mais n'avais pas pris le temps de vous la faire partager, désolé.

Petole Team a dit :
"- Une autre est de reprendre la fonction d'initialisation à chaque changement...
à voir la faisabilité avec JQUERY... "


Je t'avais répondu que j'avais essayé et que ça n'avait pas marché, mais je m'y étais mal pris.
La solution :
En réalité, à chaque fois que l'on crée à nouveau le bouton "Modifier", il faut relancer le gestionnaire d'événements $('.btnModifier')  afin qu'il prenne en compte le nouveau bouton.

var evenementBtnModifier = function ()
{
      //Événement si on clique sur "Modifier"
      $('.btnModifier').click(function()
      {
             //Traitement....
             //Événement si on clique sur"VALIDER"

             $(".btnValider").click(function()
             {
                      //Traitement....
                      //On re-exécute la fonction evenementBtnModifier

                      evenementBtnModifier();
             }
        }
}
//Execution de evenementBtnModifier
evenementBtnModifier();

Ps: j'ai défini evenementBtnModifier  en tant que variable locale dans le but d'éviter des conflits avec des fonctions ou variables globales

Voila, en réalité c'est tout bête.
Titouu


Cette discussion est classée dans : modifier, html, titre, children, objlignemodif


Répondre à ce message

Sujets en rapport avec ce message

modifier du html dans une iframe [ par spiderdurden ] spiderdurdenSalut à tous ceci est mon précédent message : J'ai une iframe dans laquelle je Comment fait on pour modifier laparence du pointeur é lui ajouté un éffet tout en restant dans du html ...? [ par neoJIN ] Bonjour je suis débutant ..... et j'ai besoin d'aide ... j'aimerai completement modifier le pointeur dune page html        com ceci (si sé possibe) Modifier les boutons WMP dans l'HTML [ par simox ] bonjour ! quelqu'un sait comment modifier les boutons play stop pause dans une page HTML pour diffuser des streming ".asx". Merci! Modifier Contenue HTML [ par Seryx ] Bonjours ,Je me demandé si il existe un code JS qui, grâce à un formulaire pourrais modifier le contenu d'une page web, ajouter ou remplacer un élémen Comment modifier un tableau HTML avec du javascriptJavascript [ par 1000ste ] Bonjour,> J'ai une page HTML avec la description d'un tableau. Je voudrais à l'aide de javascript modifié le contenu d'une zone du tableau avec la mét Tablo HTML dynamique [ par bside8 ] Bonjour,je souhaite rendre dynamique un tableau HTML.L'objectif est de mettre en surbrillance la ligne du tablo sur laquelle pointe la souris.Je ne sa include javascript en HTML [ par santano ] Bonjour,es ce qu'on peu insere dans un fichier HTML des include JS ? si oui ou on les places entre le et le et merci beaucoup utilisation de variables dans un popup [ par ghita ] bonjour,le but de mon script est d afficher un popup, pr ca j ai utilisé la fonction window.createPopup(), et ca me l affiche mais le prob, c est que afficher un code caractere special et non pas sa valeur [ par nours2001 ] Bonjour,VOici mon probleme,je veux faire un lien vers un fichiers dont le nom comporte un "#", mon#fichier.htmlje veux donc faire un lien vers mon%23f Fenetre ??? [ par rich25200 ] Bonjour,Est ce possible d'ouvrir une fenetre mais sans la barre de titre ??? ou c'est ecri le titre de la page et le nom du navigateur.....merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,543 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales