Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menggunakan `$(this)` dengan betul dengan Pengendali Klik jQuery dan Fungsi Anak Panah ES6?

Bagaimana untuk Menggunakan `$(this)` dengan betul dengan Pengendali Klik jQuery dan Fungsi Anak Panah ES6?

Linda Hamilton
Lepaskan: 2024-12-07 22:11:12
asal
372 orang telah melayarinya

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

JQuery $(this) dan Fungsi Anak Panah ES6

Walaupun fungsi anak panah ES6 menawarkan leksikal pengikatan ini, ia boleh menimbulkan cabaran apabila digunakan dengan pengikatan klik jQuery. Apabila menggunakan fungsi anak panah dalam senario ini, $(this) berkelakuan berbeza, pada asasnya mencontohi tingkah laku penutupan ES5:

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

Untuk menangani isu ini, adalah penting untuk memahami bahawa Traceur tidak mempunyai keupayaan untuk mengabaikan $( ini) untuk pengikatan leksikal dalam konteks ini. ES6 menentukan tingkah laku fungsi anak panah, dan mereka sememangnya kekurangan akses kepada leksikal ini.

Penyelesaian terletak pada menggunakan event.currentTarget dan bukannya $(this):

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

jQuery menyediakan acara .currentTarget khusus untuk tujuan ini, kerana ia menyedari bahawa akses kepada leksikal ini tidak selalu boleh dilaksanakan dengan fungsi panggil balik. Dengan memanfaatkan event.currentTarget, elemen yang betul akan disasarkan, mengelakkan keperluan untuk mengubah suai pengikatan ini atau memperkenalkan pergantungan pada kod ES5.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan `$(this)` dengan betul dengan Pengendali Klik jQuery dan Fungsi Anak Panah ES6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan