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 :

ReplaceWith() : onclick n'est plus actif après le remplacement


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 87
    Points : 56
    Points
    56
    Par défaut ReplaceWith() : onclick n'est plus actif après le remplacement
    Bonjour,

    J'ai un problème avec la fonction replaceWith().

    En effet, j'ai créé un calendrier, lorsque je clique sur un jour j'ai une croix qui apparait à la place du jour (pour ajouter un événement).

    Si je clique sur un autre jour, le jour précédent se réaffiche et la croix s'affiche sur mon second choix.

    Cependant si j'essaie de recliquer sur le premier choix, plus rien ne se passe.

    Voici le lien pour tester, ce sera plus clair : http://www.fatal-destiny.com/calendrier/

    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
    $(document).ready(function() {
    	$('#calendrier td a').click(function(){
     
    		var nbReplace = $("span[class='replace']").length;
    		if(nbReplace > 0)
    		{
    			var nbEvenements = $("span[data-evenement='1']").length;
    			var jour = $("span[class='replace']").attr('data-valeur');
    			var dateComplete = $("span[class='replace']").attr('data-date');
    			if(nbEvenements > 0)
    				$("span[class='replace']").replaceWith('<a href="#" class="'+dateComplete+'" style="display: inline-block;width: 200px; height: 120px; line-height: 120px; color: #ce2d2d;">'+jour+'</a>');
    			else
    				$("span[class='replace']").replaceWith('<a href="#" class="'+dateComplete+'" style="display: inline-block;width: 200px; height: 120px; line-height: 120px;">'+jour+'</a>');
    		}
     
    		var elemH2 = $(this);
    		var elem = $(this).attr('class');
    		var res = elem.split("-"); 
    		$.get( "charger_nb.php", { date: elem }, function( data ) {
    			if(data == 0)
    				elemH2.replaceWith('<span class="replace" data-valeur="'+res[0]+'" data-date="'+elem+'"><a href="#" onClick="ajouterEvenement(\''+elem+'\'); return false;"><img src="images/ajouter.png" alt="Ajouter" title="Ajouter un événement" class="opacite" /></a></span>');
    			else
    				elemH2.replaceWith('<span class="replace" data-valeur="'+res[0]+'" data-date="'+elem+'" data-evenement="1"><a href="#" onClick="ajouterEvenement(\''+elem+'\'); return false;"><img src="images/ajouter.png" alt="Ajouter" title="Ajouter un événement" class="opacite" /></a> <a href="#" onClick="voirEvenement(\''+elem+'\'); return false;"><img src="images/voir.png" alt="Voir" title="Voir les événements" class="opacite" /></a></span>');
    		});
    	});
    });
    Auriez-vous une idée ?

    Merci d'avance !

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Ton souci provient du fait que tu insères dynamiquement des éléments dans ta page, et du coup il perdent leur attribution du click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#calendrier td a').click(function(){
    pour que les évènements attribués sur le ready s'appliquent aux éléments insérés après la ready il faut par par on ou délégate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#calendrier td' ).on('click','a',function(e){ e.preventDefault()
    ...
    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: 13/12/2013, 04h56
  2. Réponses: 6
    Dernier message: 03/11/2012, 08h58
  3. [AC-2007] La fonction date() n'est plus reconnue après le déploiement
    Par gerarddurand dans le forum Runtime
    Réponses: 11
    Dernier message: 05/10/2010, 11h58
  4. envoyer vers dossier compressé n'est plus actif
    Par eomer212 dans le forum Windows Vista
    Réponses: 1
    Dernier message: 31/12/2009, 15h01
  5. Réponses: 6
    Dernier message: 19/11/2006, 00h41

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