Partage
  • Partager sur Facebook
  • Partager sur Twitter

query live et delegate différence!! SVP

Sujet résolu
    22 octobre 2011 à 17:59:17

    salut à tous amis zero!!
    je sais déjà que delegate bouffe moins de ram mais je suis pas sûr de la différence exacte o_O
    delegate s'applique au éléments qu'elle a crée mais pas sur ceux qui ont été créer d'une autre manière et qui ne sont pas descendant du premier attribut?
    $("table").delegate("td","click", function (){
    $(this).css("color","red");
    } ) ;
    j ai débuté en jquery hier :D avec une formation elephorm et le probleme c'est que cette partie n'est pas trop détaillé et sur le siteduzero me faudra tous relire dès le début donc :-°

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2011 à 19:10:23

      Sauf erreur de ma part, live() est simplement un delegate() placé sur le noeud <html>.

      Après, une différence important, c'est que pour utiliser live(), faut d'abord sélectionner les éléments... (donc ils sont récupérés, alors que ça sert à rien... seul le sélecteur utilisé importe)
      Alors qu'avec delegate(), tu ne sélectionnes que le parent.
      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2011 à 19:26:34

        merci pour votre réponse mais!! voici un bouc de code que j ai testé :
        $("table td").live("click", function (){
        $(this).css("color","red");
        } ) ;
        $("table").clone().insertBefore("table"); // là ça marche sur les deux donc éléments futur aussi


        $("table").delegate("td","click", function (){
        $(this).css("color","red"); // marche ici
        } ) ;
        $("table").clone().insertBefore("table"); // mais pas sur cet element futur donc ne marche pas comme live o_O
        • Partager sur Facebook
        • Partager sur Twitter
          22 octobre 2011 à 21:45:47

          C'est normal. Dans le premier cas, tu dis "Lors d'un clic sur un <td> d'une <table>...". Dans le deuxième cas, tu dis "Lors d'un clic sur un <td> des <table> que je suis en train de sélectionner actuellement...". ^^

          En gros, dans le premier cas, c'est comme si tu disais : "Eh, toi, le noeud <html> là, tu vois ce sélecteur 'table td' ? Et bah dès que je clique sur quelque chose qui correspond à ce sélecteur, tu agis, ok ?"
          Dans le deuxième cas, tu dis "Et, vous, les <table> que je sélectionne, dès que je clique sur un de vos enfants correspondant au sélecteur 'td', vous agissez, ok ?".

          En gros, delegate() te permet de placer sur un noeud parent un écouteur d'événement concernant ses enfants.
          Pour live(), c'est pareil, mais depuis le noeud <html>... donc le parent de tous les autres...
          • Partager sur Facebook
          • Partager sur Twitter
            22 octobre 2011 à 22:21:30

            merci!! une réponse digne d'un zero, bah au fait dans ma tete c'est comme ça vu qu'au final y a pas d'autres possibilité mais je voulais en etre sûr à 100% et non pas supposer :-°

            merci MR javascript (ps : je suis passé sur votre site et je suis resté o_O ) vivement que je fasse la meme chose :D
            sujet clos
            • Partager sur Facebook
            • Partager sur Twitter

            query live et delegate différence!! SVP

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown