Domanda

Sto riscontrando un po 'di difficoltà nel passare una variabile in un selettore nel prototipo. Vorrei poter passare una variabile nella stringa selezionata, in modo che una funzione possa funzionare per molti dello stesso tipo.

Al momento, questo è ciò che sostanzialmente vorrei fare:

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

Essere in grado di passare 'var' nella funzione che lo passerebbe al selettore, in modo che io possa nascondere un modello che è lo stesso per molti sulla pagina.

Qualsiasi idea per un percorso da seguire sarebbe molto apprezzata.

È stato utile?

Soluzione

Sei sulla strada giusta! Cose di coppia:

  1. var è una parola chiave JavaScript ( source ) , non utilizzarlo per nominare una variabile
  2. se stai interrogando un elemento per id (come #add_form ) non devi aggiungere alcun elemento contenitore mentre stai facendo
  3. Se stai interrogando un elemento per class , devi usare la funzione $$ , non la funzione $
  4. Per poter richiamare il tuo metodo
  5. devi scorrere il set di wrapping
  6. lo spazio bianco è significativo nei selettori css, quindi assicurati di includerli nella costruzione del selettore per dire a Prototype di cercare all'interno del tuo contenitore genitore:

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

Altri suggerimenti

Dovrebbe funzionare ... basta rinominare var con qualcos'altro.

function myFunct(yourVar)
{

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

}

Ho messo un '.' davanti a add_form perché non puoi usare più elementi con lo stesso ID, rendilo una classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top