Prototipo: ¿cómo construir dinámicamente el selector?
-
08-07-2019 - |
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.
Solución
¡Estás en el camino correcto! Un par de cosas:
-
var
es una palabra clave de JavaScript ( fuente ) , no lo use para nombrar una variable - si está consultando un elemento por ID (como
#add_form
) no necesita agregar ningún elemento contenedor como lo está haciendo - Si está consultando un elemento por
clase
, debe usar la función$$
, no la función$
- Necesita iterar sobre el conjunto envuelto para llamar a su método
-
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.