Pregunta

Tengo un poco de dificultad para pasar una variable a un selector en prototipo. Me gustaría poder pasar una variable a la cadena de selección, de modo que una función pueda funcionar para muchas del mismo tipo.

Por el momento, esto es lo que básicamente me gustaría hacer:

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

Ser capaz de pasar 'var' a la función que lo pasaría al selector, para que pueda ocultar un patrón que sea el mismo para muchos en la página.

Cualquier idea para un camino a seguir sería muy apreciada.

¿Fue útil?

Solución

¡Estás en el camino correcto! Un par de cosas:

  1. var es una palabra clave de JavaScript ( fuente ) , no lo use para nombrar una variable
  2. si está consultando un elemento por ID (como #add_form ) no necesita agregar ningún elemento contenedor como lo está haciendo
  3. Si está consultando un elemento por clase , debe usar la función $$ , no la función $
  4. Necesita iterar sobre el conjunto envuelto para llamar a su método
  5. el espacio en blanco es significativo en los selectores CSS, así que asegúrese de incluirlos en la construcción de su selector para indicarle a Prototype que busque dentro de su contenedor principal:

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

Otros consejos

Eso debería funcionar ... simplemente cambie el nombre de var a otra cosa.

function myFunct(yourVar)
{

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

}

He puesto un '.' delante de add_form porque no puede usar varios elementos con la misma ID, conviértalo en una clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top