Vorbild: Wie konstruiert dynamisch Wähler?
-
08-07-2019 - |
Frage
Ich habe ein wenig Schwierigkeiten, eine Variable in einen Selektor in Prototyp vorbei. Ich möchte in der Lage sein, eine Variable in die Auswahl String zu übergeben, so dass eine Funktion für viele der gleichen Art arbeiten können.
Im Moment ist das, was ich im Grunde zu tun:
function myFunct(var)
{
$(var + 'add_form').hide() //so inde the brackets would be ('#product1 #add_form') for example.
}
Die Lage sein, ‚var‘ in die Funktion zu übergeben, die es an die Wähler passieren würden, so dass ich ein Muster verstecken, das das gleiche für viele auf der Seite.
Alle Ideen für einen Weg würde zu folgen sehr geschätzt.
Lösung
Sie sind auf dem richtigen Weg! Paar Dinge:
-
var
ist ein JavaScript-Schlüsselwort ( Quelle ), verwenden Sie es nicht zu Name eine Variable - , wenn Sie ein Element von ID (wie
#add_form
) sind Abfragen Sie brauchen kein Containerelement hinzufügen, wie Sie tun - Wenn Sie ein Element von
class
sind abfragt, müssen Sie die$$
Funktion nutzen, nicht die$
Funktion - Sie müssen über den umschlossenen Satz wiederholen Ihre Methode aufrufen
-
Leerzeichen ist in CSS-Selektoren signifikant, so stellen Sie sicher, dass die in Ihrer Wähler Konstruktion enthalten Prototype zu sagen suchen in Ihre übergeordneten Container:
function myFunct(parent) { $$(parent + ' .add_form').invoke('hide') } myFunct('#someparent'); // hides .add_form inside #someparent
Andere Tipps
Das sollte funktionieren ... umbenennen nur var
auf etwas anderes.
function myFunct(yourVar)
{
$$('#' + yourVar + ' .add_form').each(function(s){ s.hide(); }); // yourVar being the id of the container element
}
Ich habe eine setzen ‚‘ vor add_form weil Sie mehrere Elemente mit gleicher ID nicht verwenden können, macht es eine Klasse.