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 :

Ajax ne s'appliquer pas à ce qui a été "replaceWith"


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut Ajax ne s'appliquer pas à ce qui a été "replaceWith"
    Pour s'imaginer :

    J'ai un cas classique avec des données en ligne que je supprime.

    Je mets l'action jquery pour la suppression dans un $(document).ready(...
    Lorsque j'ai supprimé ma ligne je remets à jour l'affichage en remplaçant la zone avec un replaceWith.

    Seulement à ce moment là, mon ajax ne s'applique plus sur ma nouvelle zone.

    Autrement dit, la nouvelle zone affichée après une suppression ne prend plus en compte l'ajax.

    Une explication ?

    merci

  2. #2
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    un peu plus de code ça serait bien

    sinon pour te donner des pistes de recherches, je dirais la fonction live() si tu utilise la version 3.2 de jQuery ou le plugin jQuery.live pour la 2.6.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    J'ai vu qu'il y avait la fonction html() qui est préférable à "replaceWith()".

    Je ne peux pas donner mon code tel quel mais j'ai essayé sur un exemple simple et là pas de problème ...

    Qu'est ce que la fonction live() a à voir avec mon problème ?
    Je ne comprends pas trop ...

    merci

  4. #4
    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 : 55
    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
    La fonction live a à voir qu'elle permet d'affecter aux éléments créés les événements JavaScript associés, ce qui n'est pas le comportement par défaut.
    Lorsque tu crées des éléments dynamiquement, il faut leur réaffecter les événements souhaités !
    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

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Le problème est que mes évènements sont associés à la soumission de formulaires et que la doc dit

    Possible event values: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup
    Currently not supported: blur, focus, mouseenter, mouseleave, change, submit
    Et c'est bien un évènement sur un submit qu'il me faudrait.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut Exemple simplifié
    J'ai simplifié au maximum mon problème.
    Voici comment je procède :

    Page :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <style type="text/css">
        .coloredOnMouseover{ background: LightSkyBlue; }
    </style>
     
    <script type="text/javascript">   
     
        $(document).ready(function(){    //on ne définit les fonctions que lorsque la page est chargée          
     
            $("tr").mouseover(function(){        
                $(this).addClass("coloredOnMouseover");
            }).mouseout(function(){
                $(this).removeClass("coloredOnMouseover");
            });            
     
            //suppression d'une variable
            $("form").submit(function(){                
     
                    s = $(this).serialize();        
                    $.ajax({            
                           type: "POST",
                           data : s,                               
                           url: "test.php",               
                           success: function(html){
                            $("#div_modif").html(html);
                           }        
                     });        
     
                return false;
            });                  
     
        });        
     
    </script>
     
    <div id="div_modif">
        <table>
            <tr>
                <td>ligne 1</td>
            </tr>
            <tr>
                <td>ligne 2</td>
            </tr>
        </table>        
    </div>
     
    <form method="GET">
        <input type="submit" value="remplacer table" />    
    </form>
    Contrôleur (test.php):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <table>
            <tr>
                <td>ligne 1 bis</td>
            </tr>
            <tr>
                <td>ligne 2 bis</td>
            </tr>
    </table>        
    <br/>Note : le surlignement ne s'applique plus
    Une solution autre qu'avec live() ?

    merci beaucoup

Discussions similaires

  1. Style qui ne s'applique pas
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/06/2008, 11h47
  2. CSS qui ne s'applique pas
    Par kate59 dans le forum Langage
    Réponses: 15
    Dernier message: 14/02/2008, 16h18
  3. [CSS]Classe qui ne s'applique pas
    Par narnou dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 17/03/2006, 14h11
  4. class qui ne s'applique pas sous opéra pour les <tr>?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 02/03/2006, 16h55

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