Saat ini saya sedang mengerjakan tutorial ini: Memulai dengan jQuery
Untuk dua contoh di bawah ini:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Perhatikan pada contoh pertama, kita gunakan $(this)
untuk menambahkan beberapa teks di dalam setiap li
elemen. Dalam contoh kedua, kami menggunakan this
langsung saat mengatur ulang formulir.
$(this)
tampaknya lebih sering digunakan daripada this
.
Dugaan saya adalah dalam contoh pertama, $()
adalah mengkonversi setiap li
elemen menjadi objek jQuery yang memahami append()
fungsi sedangkan dalam contoh kedua reset()
dapat dipanggil langsung pada formulir.
Pada dasarnya kita membutuhkan $()
fungsi khusus jQuery saja.
Apakah ini benar?
javascript
jquery
this
Kevin Wu
sumber
sumber
Jawaban:
Ya, Anda hanya perlu
$()
saat menggunakan jQuery. Jika Anda ingin bantuan jQuery untuk melakukan hal-hal DOM, ingatlah ini.Pada dasarnya setiap kali Anda mendapatkan satu set elemen kembali jQuery mengubahnya menjadi objek jQuery . Jika Anda tahu Anda hanya memiliki satu hasil, itu akan berada di elemen pertama.
Dan seterusnya...
sumber
$(this)[0]
lebihthis
jika mereka selalu sama?$(this)[0]
saya hanya menggunakannya untuk menggambarkan konsep. :) Saya menggunakan$("#myDiv")[0]
lebih dari itudocument.getElementById("myDiv")
.$()
adalah fungsi konstruktor jQuery.this
adalah referensi ke elemen doa DOM.Jadi pada dasarnya, di
$(this)
, Anda hanya melewatithis
di$()
sebagai parameter sehingga Anda bisa memanggil metode jQuery dan fungsi.sumber
Ya, Anda memerlukan
$(this)
fungsi jQuery, tetapi ketika Anda ingin mengakses metode javascript dasar dari elemen yang tidak menggunakan jQuery, Anda bisa menggunakannyathis
.sumber
Saat menggunakan
jQuery
, disarankan untuk menggunakan$(this)
biasanya. Tetapi jika Anda tahu (Anda harus belajar dan tahu) perbedaannya, kadang-kadang lebih mudah dan cepat untuk digunakan sajathis
. Contohnya:lebih mudah dan lebih murni daripada
sumber
this
adalah elemen,$(this)
adalah objek jQuery yang dibangun dengan elemen ituPandangan yang lebih dalam
this
MDN terkandung dalam konteks eksekusiRuang 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 .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 kejQuery
, kode:)window.jQuery = window.$ = jQuery;
. Secara internal, fungsi jQuery instantiates objek fungsi. Jadi sementara itu mungkin tidak segera jelas, menggunakan$()
penggunaan internalnew jQuery()
. Bagian dari konstruksi objek jQuery ini adalah untuk menemukan semua kecocokan pemilih. Konstruktor juga akan menerima string dan elemen html . Ketika Anda meneruskanthis
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 kasusthis
).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 manaobj
struktur mirip array, dani
merupakan iterator yang digunakan untuk posisi dalam array elemen saat ini.sumber
Ya, dengan menggunakan
$(this)
, Anda mengaktifkan fungsionalitas jQuery untuk objek. Dengan hanya menggunakanthis
, itu hanya memiliki fungsi Javascript generik.sumber
this
referensi objek javascript dan$(this)
digunakan untuk merangkum dengan jQuery.Contoh =>
sumber