JQuery $ (this) Auswahlfunktion und Einschränkungen

7

Ich brauche Hilfe, $ (this) zu verstehen. Ist es möglich, den Fokus von "this" innerhalb der Klammern einzuschränken, oder schließt "this" die Verwendung anderer Attribute aus?

Zum Beispiel: Ich verstehe nicht, warum dieser Code:

%Vor%

kann nicht wie folgt umgeschrieben werden:

%Vor%

ohne auf etwas wie:

zurückgreifen zu müssen %Vor%

Kannst du mich auch in der JQuery-Dokumentation auf "das" hinweisen? Aus naheliegenden Gründen ist es schwierig, "das" als Suchbegriff zu verwenden.

    
Brien Malone 10.04.2011, 10:45
quelle

5 Antworten

14

this ist kein jQuery-Ding, sondern ein < a href="https://developer.mozilla.org/de/JavaScript/Reference/Operators/Special/this"> grundlegendes JavaScript eins . Es kann nicht wie in Beispielen beschrieben neu geschrieben werden, da es ein Objekt ist, insbesondere entweder ein DOM-Element oder ein jQuery-Objekt (je nachdem, in welchem ​​Kontext Sie sich befinden). Also wenn du das getan hast:

%Vor%

Was Sie wirklich tun würden, ist .toString() auf this zum Verketten der Strings, was zu folgendem Ergebnis führt:

%Vor%

.... was kein gültiger Selektor ist.

Was die weitere Lektüre angeht, glaube ich, dass dieser Artikel weiterhin eine der besten Referenzen / Ressourcen zu sein scheint lerne was this (ein Kontextschlüsselwort) bedeutet.

Pro Kommentaranfragen gibt es einige Beispiele dafür, was this an verschiedenen Stellen ist:

  • Ereignishandler, zum Beispiel: $("selector").click(function() { alert(this); });
    • this bezieht sich auf das DOM-Element, auf dem der Event-Handler ausgelöst wird.
  • In einem jQuery-Plugin, zum Beispiel: $.fn.myPlugin = function() { alert(this); });
    • this ist das jQuery-Objekt, an dem das Plugin aufgerufen wurde, zum Beispiel: $("selector").myPlugin(); , this ist das $("selector") jQuery-Objekt.
  • Innerhalb einer generischen Funktion, zum Beispiel: function myFunc() { alert(this); };
    • this ist der Kontext, in dem Sie sich befinden, ob es ein Objekt oder etwas anderes ist, ein paar Beispiele:
    • $("selector").click(myFunc); - this ist das DOM-Element, wie oben
    • $("selector").click(function() { myFunc(); }); - this ist der globale Inhalt, window
    • myFunc.call(whatThisIs, arg1, arg2); - this ist whatThisIs
Nick Craver 10.04.2011, 10:47
quelle
5

Verwenden Sie .find()

%Vor%

Oder verwenden Sie den Parameter context , um jQuery( selector, context ) (intern ruft es nur "find auf jeden Fall ...").

%Vor%     
gnarf 10.04.2011 10:48
quelle
0

this ist keine Zeichenfolge, die einen CSS-Selektor darstellt (z. B. div , #my_id oder .my_class ).
Wenn Sie this als Argument für die jQuery-Funktion übergeben, gibt es ein jQuery-Objekt basierend auf dem aktuellen Element zurück (worauf es Bezug nimmt), sodass Sie nicht wie $(this + selector) verwenden können.

    
gion_13 10.04.2011 10:50
quelle
0

Sie können einen Blick auf diese: Ссылка

Grundsätzlich ist this das DOM-Element, auf das der Callback verweist. Sie können $(this + " div") nicht ausführen, weil Sie einem Element eine Zeichenfolge hinzufügen. Sie müssen zuerst die ID wie in Ihrem dritten Code-Snippet erhalten.

Übrigens ist $(this).children("div") nicht dasselbe wie $('#'+$(this).attr("id")+" div")

Erstens, this hat möglicherweise keine ID, in diesem Fall funktioniert der zweite Weg überhaupt nicht. Und selbst wenn es eine ID hat, ist dieser zweite Code tatsächlich $(this).find("div") . Wenn Sie nur Kinder wollen, müssen Sie tun:

%Vor%     
tster 10.04.2011 10:51
quelle
0

Zuerst müssen Sie verstehen, was das ist , es hängt von einem Kontext ab. Wenn Sie $ function aufrufen, wird ein jQuery-Objekt zurückgegeben.

%Vor%

Es bedeutet von spezifischem Objekt, alle Kinder zu bekommen, sehen Sie den folgenden Link: Ссылка

    
vietean 10.04.2011 11:03
quelle

Tags und Links