Question

J'ai un peu de difficulté à passer une variable à un sélecteur de prototype. J'aimerais pouvoir passer une variable dans la chaîne de sélection afin qu'une fonction puisse fonctionner pour plusieurs du même type.

Pour le moment, voici ce que je voudrais fondamentalement faire:

function myFunct(var)
{
  $(var + 'add_form').hide()  //so inde the brackets would be ('#product1 #add_form') for example.
}

Pouvoir passer 'var' dans la fonction qui la transmettrait au sélecteur afin que je puisse masquer un motif identique pour de nombreuses personnes de la page.

Toute idée de voie à suivre serait grandement appréciée.

Était-ce utile?

La solution

Vous êtes sur la bonne voie! Couple de choses:

  1. var est un mot clé JavaScript ( source ). , ne l'utilisez pas pour nommer une variable
  2. si vous interrogez un élément par son identifiant (tel que #add_form ), vous n'avez pas besoin d'ajouter d'élément de conteneur comme vous le faites
  3. Si vous interrogez un élément par classe , vous devez utiliser la fonction $$ et non la fonction $
  4. Vous devez parcourir le jeu enveloppé pour appeler votre méthode
  5. Les espaces blancs sont importants dans les sélecteurs css. Veillez donc à les inclure dans votre construction de sélecteur pour indiquer à Prototype de rechercher dans votre conteneur parent:

    function myFunct(parent) {
      $(parent + ' .add_form').invoke('hide')
    }
    
    myFunct('#someparent'); // hides .add_form inside #someparent
    

Autres conseils

Cela devrait fonctionner ... il suffit de renommer var en quelque chose d'autre.

function myFunct(yourVar)
{

  $('#' + yourVar + ' .add_form').each(function(s){ s.hide(); });  // yourVar being the id of the container element

}

J'ai mis un '.' devant add_form, car vous ne pouvez pas utiliser plusieurs éléments avec le même ID, faites-en une classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top