this
adalah elemen, $(this)
adalah objek jQuery yang dibangun dengan elemen itu
$(".class").each(function(){
//the iterations current html element
//the classic JavaScript API is exposed here (such as .innerHTML and .appendChild)
var HTMLElement = this;
//the current HTML element is passed to the jQuery constructor
//the jQuery API is exposed here (such as .html() and .append())
var jQueryObject = $(this);
});
Pandangan yang lebih dalam
this
MDN terkandung dalam konteks eksekusi
Ruang lingkup mengacu pada ECMA Konteks Eksekusi saat ini . Untuk memahami this
, penting untuk memahami cara konteks eksekusi beroperasi dalam JavaScript.
konteks eksekusi mengikat ini
Ketika kontrol memasuki konteks eksekusi (kode dieksekusi dalam lingkup itu) lingkungan untuk variabel diatur (Lingkungan Leksikal dan Variabel - pada dasarnya ini mengatur area untuk memasukkan variabel yang sudah dapat diakses, dan area untuk variabel lokal menjadi disimpan), dan pengikatan this
terjadi.
jQuery mengikat ini
Konteks eksekusi membentuk tumpukan logis. Hasilnya adalah bahwa konteks yang lebih dalam di stack memiliki akses ke variabel sebelumnya, tetapi binding mereka mungkin telah diubah. Setiap kali jQuery memanggil fungsi panggilan balik, ia mengubah pengikatan ini dengan menggunakan apply
MDN .
callback.apply( obj[ i ] )//where obj[i] is the current element
Hasil dari panggilan apply
adalah bahwa di dalam fungsi panggilan balik jQuery, this
merujuk pada elemen saat ini yang digunakan oleh fungsi panggilan balik.
Misalnya, dalam .each
, fungsi panggilan balik yang umum digunakan memungkinkan untuk .each(function(index,element){/*scope*/})
. Dalam lingkup itu, this == element
memang benar.
panggilan balik jQuery menggunakan fungsi terapkan untuk mengikat fungsi yang dipanggil dengan elemen saat ini. Elemen ini berasal dari array elemen objek jQuery. Setiap objek jQuery yang dibangun berisi array elemen yang cocok dengan pemilih jQuery API yang digunakan untuk instantiate objek jQuery.
$(selector)
memanggil fungsi jQuery (ingat itu $
referensi ke jQuery
, kode:) window.jQuery = window.$ = jQuery;
. Secara internal, fungsi jQuery instantiates objek fungsi. Jadi sementara itu mungkin tidak segera jelas, menggunakan $()
penggunaan internal new jQuery()
. Bagian dari konstruksi objek jQuery ini adalah untuk menemukan semua kecocokan pemilih. Konstruktor juga akan menerima string dan elemen html . Ketika Anda meneruskan this
ke konstruktor jQuery, Anda melewati elemen saat ini untuk objek jQuery yang akan dibangun . Objek jQuery kemudian berisi struktur mirip array dari elemen DOM yang cocok dengan pemilih (atau hanya elemen tunggal dalam kasus this
).
Setelah objek jQuery dibuat, API jQuery sekarang terbuka. Ketika fungsi api jQuery dipanggil, itu akan secara internal beralih di atas struktur seperti array ini. Untuk setiap item dalam array, ia memanggil fungsi panggilan balik untuk api, yang mengikat panggilan balik this
ke elemen saat ini. Panggilan ini dapat dilihat pada potongan kode di atas di mana obj
struktur mirip array, dan i
merupakan iterator yang digunakan untuk posisi dalam array elemen saat ini.