Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menggunakan $(this) jQuery dengan Fungsi Anak Panah ES6 dalam Pengendali Acara?

Bagaimana untuk Menggunakan $(this) jQuery dengan Fungsi Anak Panah ES6 dalam Pengendali Acara?

Mary-Kate Olsen
Lepaskan: 2024-12-14 06:15:12
asal
377 orang telah melayarinya

How to Correctly Use jQuery's $(this) with ES6 Arrow Functions in Event Handlers?

Menggunakan jQuery $(this) dengan ES6 Arrow Functions (leksikal pengikatan ini)

Pengendali acara mengikat menggunakan fungsi anak panah ES6 boleh menjadi masalah apabila bekerja dengan pemilih $(this) jQuery. Ini kerana fungsi anak panah mengikat kata kunci ini secara leksikal, yang mungkin bukan gelagat yang diingini dalam panggilan balik jQuery.

Contoh berikut menggambarkan isu:

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

Dalam contoh di atas, menggunakan fungsi anak panah untuk pengendali acara klik menghasilkan $(this) merujuk contoh Permainan dan bukannya elemen yang diklik. Ini kerana fungsi anak panah tidak mempunyai pengikatan ini sendiri, jadi mereka mewarisinya daripada skop sekeliling.

Penyelesaian

Untuk menyelesaikan isu ini, elakkan menggunakan fungsi anak panah apabila mengikat pengendali acara jQuery. Sebaliknya, gunakan pengisytiharan fungsi tradisional atau ikat kata kunci ini secara eksplisit menggunakan kaedah bind:

class Game {
  foo() {
    this._pads.on('click', function() {
      if (this.go) { $(this).addClass('active'); }
    }.bind(this));
  }
}
Salin selepas log masuk

Sebagai alternatif, anda boleh mengakses elemen yang diklik menggunakan event.currentTarget:

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

Menggunakan acara .currentTarget menyediakan akses kepada elemen yang mencetuskan acara, tanpa mengira konteks mengikat panggilan balik fungsi.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan $(this) jQuery dengan Fungsi Anak Panah ES6 dalam Pengendali Acara?. 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