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 :

Syntaxe incomprise avec click


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Par défaut Syntaxe incomprise avec click
    Bonsoir,

    Je me retrouve avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // "add-to-dropbox" event
      .find('.hierarchical-select .add-to-dropbox').unbind().click(function(_hsid) {
        return function() {
          Drupal.HierarchicalSelect.update(_hsid, 'add-to-dropbox', { opString : addOpString });
          return false; // Prevent the browser from POSTing the page.
        };
      }(hsid)).end()
    Et en fait je ne comprends vraiment pas ce que représente le (hsid) de la dernière ligne (avec .end()) ... pouvez-vous m'éclairer s'il vous plait ?

    Merci d'avance pour votre aide.

    Bien cordialement,

    Kaory

  2. #2
    Membre confirmé Avatar de maysam
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Par défaut
    la réponse à ta question dans ce lien:
    http://jquery.jarodxxx.com/manuel/Les-parcours/end/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Par défaut
    Bonjour,

    Merci pour votre réponse mais je comprends ce que end() fait.
    Ce que je ne comprends, c'est le sens du (hsid) qui le précède ?

    Est-ce que ce serait la variable dans laquelle est stockée la valeur renvoyer par la fonction précédente (click ?) ?

    Je vous remercie par avance pour votre aide.

    Bien cordialemet,

    Kaory

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 86
    Par défaut
    le (hsid) ne se rapporte pas à .end(), il suit la fonction anonyme bindée au clic de façon à lui indiquer qu'elle doit être exécutée avec cet argument.

    C'est de la syntaxe javascript "classique", ça n'a pas vraiment à voir avec jquery.

    Tu as en js deux grands types de fonctions: les nommées, que l'on déclare d'abord puis que l'on exécute en les appelant par leur identifiant et en leur passant des arguments, et les anonymes que l'on va généralement déclarer et utiliser au même endroit. (en gros)

    fonctionnement classique d'une fonction nommée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //déclaration
     
    function Afficher(valeur)
    {
        alert(valeur);
    }
     
    //utilisation
     
    Afficher("trois");
    la même chose mais avec une fonction anonyme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function(valeur)
    {
        alert(valeur);
    }("trois");
    le "valeur" entre les parenthèses qui suivent "function" sert à déclarer l'argument, les parenthèses qui suivent le corps de la fonction servent à exécuter cette fonction avec "trois" en argument.

    dans ton bout de code, tu indiques que la fonction anonyme qui commence par "function(_hsid)" doit être exécutée, avec un "_hsid" qui vaudra le contenu de la variable "hsid" au moment du bind.

    Parce qu'au-delà de l'aspect exécution de fonction anonyme, on a ici une closure... J'aurais du mal à expliquer cela simplement. ^^' (si quelqu'un a un tuto facile sur les closures sous la main pour compléter).

    Tu peux remarquer que la première fonction anonyme en renvoie une seconde. En fait, la première, de par la présence des ces fameuses parenthèses, est exécutée au moment du bind (donc généralement au chargement de la page), et c'est la deuxième qui est renvoyée comme argument de "click()".
    Cette méthode est utilisée pour conserver la valeur de "hsid" au chargement de la page, quelque soit le moment où le clic se fait.

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Il s'agit d'un appel de fonction

    C'est un mélange des notions suivantes:

    1) Déclaration d'une fonction anonyme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var f = function (a) {
      alert(a);
    };
    2) Appel d'une fonction

    3) Passage d'une fonction comme paramètre d'une autre

    4) Création de la fonction en l'appelant immédiatement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var f = function (a) {
      alert(a);
    }(12);

    Et au final, un mélange de tout ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test( 
      function(a) { 
        alert(a); 
      }(12); 
    );
    EDIT: Aie... trop tard :-) Voici l'article sur la closure de wikipedia, il est pas mal

Discussions similaires

  1. [PostgreSQL] [PostgreSQL] Problème de syntaxe (NULL) avec PHP et Postgresql
    Par el_butcho dans le forum PHP & Base de données
    Réponses: 40
    Dernier message: 16/07/2006, 18h28
  2. Erreur incomprise avec DBI et perl
    Par duedos dans le forum SGBD
    Réponses: 3
    Dernier message: 04/07/2006, 11h43
  3. [SQL] probleme de syntaxe sql avec php
    Par kaygee dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/06/2006, 14h32
  4. syntaxe requete avec parametres
    Par mike600river dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/05/2006, 17h03
  5. [Syntaxe] Requêtes avec null
    Par Procto dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/07/2005, 16h10

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