Mehrdeutigkeit bei der Interpretation optionaler Parameter

8

Die Signatur der jQuery-Funktion .on ist

  

$ (elements) .on (Ereignisse [, Selektor] [, Daten], Handler);

wobei selector und data optional sind. Daher der Funktionsaufruf

  

$ (Elemente) .on (var1, var2, var3);

könnte mit var2 entweder als selector oder als data interpretiert werden. Gibt es Mehrdeutigkeit?

Wie wird im Allgemeinen die Mehrdeutigkeit von optionalen Parametern für andere jQuery-Funktionen behandelt?

    
Randomblue 18.11.2011, 21:18
quelle

5 Antworten

4

Wenn nur einer der Selektor- und Datenparameter bereitgestellt wird und der Wert eine Zeichenkette ist, wird davon ausgegangen, dass es sich um einen Selektor handelt.

Von jQuery doco für .on() :

  

Das Datenargument kann ein beliebiger Typ sein. Wenn jedoch eine Zeichenfolge verwendet wird, muss der Selektor entweder bereitgestellt oder explizit als Null übergeben werden, damit die Daten nicht als Selektor interpretiert werden. Es empfiehlt sich, ein Objekt (Map) zu verwenden, damit mehrere Werte als Eigenschaften übergeben werden können.

Ein ähnliches Prinzip gilt für andere jQuery-Methoden mit optionalen Parametern.

    
nnnnnn 18.11.2011, 21:26
quelle
1

Selektor ist eine Zeichenfolge und Daten ein Objekt. Der Test sollte etwas wie sein.

%Vor%

Bearbeiten Sie die tatsächliche jQuery-Quelle von Ссылка

%Vor%     
12000 18.11.2011 21:26
quelle
1

Für das von Ihnen angegebene Beispiel erwarten die Argumente selector und data verschiedene Objekttypen. Das selector Argument sollte ein String sein und data sollte ein Objekt sein. Sie können zwischen dem Operator typeof unterscheiden. Zum Beispiel:

%Vor%

Beachten Sie, dass wenn Sie eine Zeichenfolge in on als data -Argument übergeben müssten, das Argument selector ebenfalls angegeben werden müsste (selbst wenn Sie nur null übergeben).

    
James Allardice 18.11.2011 21:27
quelle
1

Hier ist ein bisschen von der jQuery-Quelle. Im Grunde betrachten sie die Arten der Parameter und weisen sie bei Bedarf anderen Parametern zu. Wenn beispielsweise das Element in der Position "selector" in der Parameterliste keine Zeichenfolge ist, wird angenommen, dass es sich um den Parameter "data" handeln soll usw.

%Vor%     
Jacob Mattison 18.11.2011 21:27
quelle
1

Ich habe auch meine eigenen Bedenken mit .on () ...

Der Kontext von this war immer sehr klar mit delegate vs bind (oder einer Verknüpfung von bind). Jetzt mit on kann sich der Kontext sehr plötzlich ändern ...

Zum Beispiel

%Vor%

Dies ist die erste jQuery-Methode, die jemals den Kontext von this geändert hat, indem nur ein anderes Argument übergeben wurde.

Schnelle Tatsache - delegate - (in 1.4.2) war die erste Methode, die den Selektor nicht verwendete, um den Kontext für die Callback-Funktion darzustellen. Aber zumindest war es immer noch klar ... wenn du .delegate () siehst, verstehst du was passiert.

    
John Strickler 18.11.2011 21:29
quelle

Tags und Links