Pergunta

Estou tendo um pouco de dificuldade em passar uma variável em um seletor no protótipo. Eu gostaria de ser capaz de passar uma variável na seqüência de seleção, de modo que uma função pode funcionar para muitos do mesmo tipo.

No momento, este é o que eu basicamente como fazer:

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

Seja capaz de passar 'var' para a função que iria passá-lo para o seletor, para que eu possa esconder um padrão que é o mesmo para muitos na página.

Todas as idéias para um caminho a seguir seria muito apreciada.

Foi útil?

Solução

Você está no caminho certo! Algumas coisas:

  1. var é uma palavra-chave JavaScript ( fonte ), não usá-lo para nomear uma variável
  2. se você está consultando um elemento por id (como #add_form) você não precisa adicionar nenhum elemento de recipiente, como você está fazendo
  3. Se você está consultando um elemento por class, você precisa usar a função $$, não a função $
  4. Você precisa iterar sobre o conjunto embrulhado para chamar seu método
  5. espaço em branco é significativo em seletores css, então certifique-se de incluir aqueles em sua construção seletor para dizer Protótipo de pesquisa em seu recipiente pai:

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

Outras dicas

Isso deve funcionar ... var apenas de mudança de nome para outra coisa.

function myFunct(yourVar)
{

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

}

Eu coloquei um '' na frente de add_form porque você não pode usar vários elementos com o mesmo ID, torná-lo uma classe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top