jQuery: Was ist "verboten" in Javascript zu tun?

8

Eine Best Practices-Frage zu jQuery.

Ich schreibe eine sehr jQuery-intensive Webseite. Ich bin neu in jQuery und bemerke seine Macht, aber da ich mit schwerem Javascript Erfahrung und Wissen komme, ist meine Frage: Was in jQuery und was in einfachem Javascript getan werden sollte.

Zum Beispiel gibt es Callbacks, die ein einfaches DOM-Objekt als Argument senden. Sollte ich das verwenden oder sollte ich es umbrechen (wie $(this) ).

Ist es wichtig, ob ich das tue.x = y oder $ (this) .attr ("x", y).

    
flybywire 08.06.2010, 03:24
quelle

4 Antworten

4

Wenn Ihre Funktion ein DOM-Objekt empfängt und Sie keine jQuery-Funktionalität für dieses DOM-Objekt benötigen, müssen Sie sie nicht in ein jQuery-Objekt konvertieren. Wenn Sie beispielsweise ein Checkbox-Objekt erhalten, können Sie die Eigenschaft checked ohne Verwendung von jQuery untersuchen.

Wenn Sie jedoch zu einem anderen Element als diesem Kontrollkästchen navigieren müssen, kann es sich lohnen, es zu konvertieren:

%Vor%

jQuery (wie andere Bibliotheken) fügt sich nahtlos in native JS ein. Wenn Sie zusätzliche Funktionalität benötigen, erweitern Sie das betreffende Objekt.

Wie bei Ihrer letzten Frage: Möglicherweise ist die Funktion data hilfreich, um nicht standardmäßige DOM-Attribute zu vermeiden. Wenn Ihre Eigenschaft x in Ihrer Frage tatsächlich ein gültiges DOM-Attribut ist, können Sie entweder this.x = y oder $(this).attr('x', y) schreiben, IMO spielt es keine Rolle. Wenn x jedoch kein DOM-Attribut ist, verwenden Sie

%Vor%

Auf diese Weise können Sie beliebige Schlüssel / Wert-Paare mit dem DOM-Element speichern, wobei value ein beliebiger primitiver Wert oder ein beliebiges primitives Objekt sein kann.

    
Tom Bartel 08.06.2010, 03:38
quelle
3

Ich denke, es ist ein Urteilsspruch. Nutze deinen gesunden Menschenverstand.

Wenn Sie beispielsweise 1000 divs auf der Seite haben, möchten Sie diese wahrscheinlich nicht in $ (..)

einschließen %Vor%

Wie bei anderen Aufgaben können Sie, solange Sie verstehen, was jQuery macht, nur aus Gründen der Konsistenz daran festhalten, aber beachten Sie die Leistungsprobleme wie im obigen Beispiel.

Wie @colinmarc erwähnt, verwischt jQuery manchmal die Unterscheidung zwischen Elementattributen und Objekteigenschaften, die irreführend und fehlerhaft sein können.

    
Anurag 08.06.2010 03:33
quelle
0

Wenn Sie jQuery verwenden, gibt es immer eine Instanz von jQuery zurück, es sei denn, Sie verwenden eine Funktion wie val ();

Der Grund, warum wir $ (this) .value anstelle von this.value verwenden, ist sicherzustellen, dass dies eine Instanz von jQuery ist.

Wenn irgendwo in Ihrem Code eine Variable mit dem Namen my_link gesetzt wird, die ein DOM-Objekt und nicht eine jQuery-Funktion ist .. weiter in Ihrer Anwendung würde my_link.val () zu einem Fehler führen, aber indem Sie $ (my_link) ausführen. val () wird Ihnen versichern, dass die Funktion val verfügbar sein wird. as $ () gibt eine Instanz von jquery zurück.

Entschuldigung für das Missverständnis in meinem vorherigen Beitrag.

    
RobertPitt 08.06.2010 03:39
quelle
0

Da jQuery-Objekte eine umfangreichere Funktionalität als JS-DOM-Knoten haben, können Sie, wenn Sie sich am Zaun befinden, genauso gut in jQuery einbinden. JQuery ist so leicht, es gibt nicht viel Grund, keine jQuery-Objekte zu verwenden.

  

Ist es wichtig, ob ich das tue.x = y oder $ (this) .attr ("x", y).

Der Native wird etwas schneller sein, aber Sie werden wahrscheinlich mehr Zeit in anderem Code verbringen - DOM Traversal oder Building. In diesem speziellen Beispiel ist Ersteres prägnanter, also würde ich das wählen. Da jQuery so leicht ist, tendiere ich dazu, flüssig hin und her zu schalten.

Hier sind weitere Richtlinien, denen wir folgen:

  • Bei Callbacks wie einem Klick-Handler müssen Sie der API folgen - normalerweise einem DOM-Knoten. Code, den Sie schreiben, der ähnlich ist, sollte wahrscheinlich auch DOM-Knoten nehmen. Wenn Sie jedoch eine Liste mit Elementen haben, verwenden Sie immer ein jQuery-Objekt.
  • Für den meisten Code versuche ich zu sehen, ob Sie den Code als jQuery-Plugin strukturieren können - indem Sie eine Transformation auf einen Satz von DOM-Knoten anwenden. Wenn Sie dies tun können, erhalten Sie einige Hinweise aus der Plugin-Architektur.
  • Ich benutze jQuerys Bind / Trigger-Mechanismus, da er sehr flexibel und wenig koppelbar ist.
  • Um den Code in Ordnung zu halten, würde ich den Namen der jQuery-Objekte mit einem Dollarzeichen vorziehen. Zum Beispiel var $this = $(this); . Obwohl es wirklich keine große Sache ist, $ (exzessiv) zu nennen, sieht es doch schlampig aus, wenn man es zu viel nennt.

Hoffe, das hilft.

    
ndp 08.06.2010 04:22
quelle

Tags und Links