Partage
  • Partager sur Facebook
  • Partager sur Twitter

jQuery :nth-child(equation)

c'est-à-dire ?

Sujet résolu
    4 août 2009 à 14:48:04

    Bonjour, j'aimerais savoir ce que signifie le filtre :nth-child(equation)
    de jQuery
    Car dans les tutos et même dans leur doc, ils disent que l'ont peut utiliser un nombre, la chaîne de caractère 'odd' ou 'even' et également 'equation' mais cette dernière me semble un peu ambigu ...
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2009 à 19:10:06

      Une «opération» ? Rien à voir :p ! Un xn+y peut facilement être détecté avec des expressions régulières.
      Si ça t'intéresse, voici le code issue de la bibliothèque :
      // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
      var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
        match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
        !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
      
      // calculate the numbers (first)n+(last) including if they are negative
      match[2] = (test[1] + (test[2] || 1)) - 0;
      match[3] = test[3] - 0;
      


      Aucun eval() ! D'ailleurs il n'y en a pas beaucoup dans jQuery. Il y en a un quand on fait une requête AJAX et on veut que les données retournées soit en JSON.
      Sinon il y a la fonction $.globalEval(), très utilisée dans jQuery, qui est celle-ci :
      globalEval: function( data ) {
        if ( data && /\S/.test(data) ) {
          // Inspired by code by Andrea Giammarchi
          // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
          var head = document.getElementsByTagName("head")[0] || document.documentElement,
            script = document.createElement("script");
      
          script.type = "text/javascript";
          if ( jQuery.support.scriptEval )
            script.appendChild( document.createTextNode( data ) );
          else
            script.text = data;
      
          // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
          // This arises when a base node is used (#2709).
          head.insertBefore( script, head.firstChild );
          head.removeChild( script );
        }
      },
      
      Comme tu peux le voir, c'est une petite astuce qui évite l'appel à eval().
      • Partager sur Facebook
      • Partager sur Twitter
        5 août 2009 à 9:23:56

        :waw:
        En fait c'est un fonction affine, j'avais même pas remarqué... :honte:
        Merci pour ta réponse, en fait l'idée est plutôt intéressante (au début je pensais ne pas le mettre dans ma librairie)...

        Et merci pour l'astuce de l'eval() ^^ (pour l'instant même pas eu besoin d'en utiliser :D )
        • Partager sur Facebook
        • Partager sur Twitter

        jQuery :nth-child(equation)

        × 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