Heim >Web-Frontend >js-Tutorial >Wie verwende ich „$(this)' korrekt mit jQuery-Click-Handlern und ES6-Pfeilfunktionen?

Wie verwende ich „$(this)' korrekt mit jQuery-Click-Handlern und ES6-Pfeilfunktionen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 22:11:12414Durchsuche

How to Correctly Use `$(this)` with jQuery Click Handlers and ES6 Arrow Functions?

jQuery $(this) und ES6-Pfeilfunktionen

Während ES6-Pfeilfunktionen eine lexikalische Bindung bieten, können sie bei Verwendung mit eine Herausforderung darstellen jQuery-Klickbindungen. Wenn in diesem Szenario Pfeilfunktionen verwendet werden, verhält sich $(this) anders und emuliert im Wesentlichen das ES5-Abschlussverhalten:

this._pads.on('click', () => {
  if (this.go) { $(this).addClass('active'); }
});

Um dieses Problem zu beheben, ist es wichtig zu verstehen, dass Traceur nicht in der Lage ist, $( zu ignorieren. Dies) für die lexikalische Bindung in diesem Zusammenhang. ES6 bestimmt das Verhalten von Pfeilfunktionen, und ihnen fehlt von Natur aus der Zugriff auf lexikalisches This.

Die Lösung liegt in der Verwendung von event.currentTarget anstelle von $(this):

this._pads.on('click', (event) => {
  if (this.go) {
    $(event.currentTarget).addClass('active');
  }
});

jQuery stellt Ereignisse bereit .currentTarget speziell für diesen Zweck, da erkannt wird, dass der Zugriff auf lexikalische Funktionen mit Callback-Funktionen nicht immer möglich ist. Durch die Nutzung von event.currentTarget wird auf das richtige Element abgezielt, wodurch die Notwendigkeit vermieden wird, diese Bindung zu ändern oder eine Abhängigkeit vom ES5-Code einzuführen.

Das obige ist der detaillierte Inhalt vonWie verwende ich „$(this)' korrekt mit jQuery-Click-Handlern und ES6-Pfeilfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn