Sintaksis
- Singkatan untuk acara siap pakai oleh roosteronacid
- Pemutusan saluran dan kemampuan rantai oleh roosteronacid
- Filter bersarang oleh Nathan Long
- Tembolok koleksi dan jalankan perintah pada baris yang sama oleh roosteronacid
- Berisi pemilih oleh roosteronacid
- Mendefinisikan properti pada pembuatan elemen oleh roosteronacid
- Mengakses fungsi jQuery seperti yang Anda lakukan pada array oleh roosteronacid
- Fungsi noConflict - Membebaskan variabel $ oleh Oli
- Isolate $ variable dalam mode noConflict oleh nickf
- Mode tanpa konflik oleh roosteronacid
Penyimpanan data
- Fungsi data - ikat data ke elemen oleh TenebrousX
- Atribut data HTML5 mendukung, pada steroid! oleh roosteronacid
- Plug-in metadata jQuery oleh Filip Dupanović
Optimasi
- Optimalkan kinerja penyeleksi kompleks oleh roosteronacid
- Parameter konteks oleh lupefiasco
- Simpan dan gunakan kembali pencarian oleh Nathan Long
- Membuat Elemen HTML dan menyimpan referensi, Memeriksa apakah ada elemen, Menulis penyeleksi Anda sendiri oleh Andreas Grech
Lain-lain
- Periksa indeks elemen dalam koleksi dengan redsquare
- Penangan acara langsung oleh TM
- Ganti fungsi anonim dengan fungsi bernama oleh ken
- Kerangka kerja Microsoft AJAX dan jembatan jQuery oleh Slace
- tutorial jQuery oleh egyamado
- Hapus elemen dari koleksi dan pertahankan rantai oleh roosteronacid
- Nyatakan $ this di awal fungsi anonim oleh Ben
- FireBug lite, plug-in Hotbox, memberi tahu kapan gambar telah dimuat dan Google CDN oleh Color Blend
- Penggunaan bijaksana atas skrip jQuery pihak ketiga oleh harriyott
- Fungsi masing-masing oleh Jan Zich
- Plug-in Formulir Ekstensi oleh Chris S
- Asinkron setiap fungsi oleh OneNerd
- Plug-in templat jQuery: menerapkan logika kompleks menggunakan fungsi render oleh roosteronacid
javascript
jquery
roosteronacid
sumber
sumber
if ((var someDiv = $("#someDiv")).length) { /* do stuff with someDiv... */ }
someDiv
bahwa telah dicakup dalamif
pernyataan, karena tidak; JavaScript hanya mendukung ruang lingkup fungsidata()
Metode jQuery bermanfaat dan tidak dikenal. Ini memungkinkan Anda untuk mengikat data ke elemen DOM tanpa mengubah DOM.sumber
Filter Bersarang
Anda dapat membuat sarang filter (seperti yang ditunjukkan di sini ).
sumber
Saya benar-benar bukan penggemar jalan
$(document).ready(fn)
pintas. Tentu saja mengurangi kode tetapi juga mengurangi cara keterbacaan kode. Ketika Anda melihat$(document).ready(...)
, Anda tahu apa yang Anda lihat.$(...)
digunakan terlalu banyak cara lain untuk segera masuk akal.Jika Anda memiliki banyak kerangka kerja yang dapat Anda gunakan
jQuery.noConflict();
seperti yang Anda katakan, tetapi Anda juga dapat menetapkan variabel yang berbeda untuk itu seperti ini:Sangat berguna jika Anda memiliki beberapa kerangka kerja yang dapat
$x(...)
dirubah ke- gaya panggilan.sumber
Ooooh, jangan lupa metadata jQuery ! Fungsi data () bagus, tetapi harus diisi melalui panggilan jQuery.
Alih-alih melanggar kepatuhan W3C dengan atribut elemen khusus seperti:
Gunakan metadata sebagai gantinya:
sumber
data-*
atribut secara otomatis tersedia melalui panggilan ke.data()
Penangan Acara Langsung
Tetapkan pengendali acara untuk setiap elemen yang cocok dengan pemilih, bahkan jika itu ditambahkan ke DOM setelah memuat halaman awal:
Ini memungkinkan Anda untuk memuat konten melalui ajax, atau menambahkannya melalui javascript dan mengatur penangan event agar diatur dengan benar untuk elemen-elemen tersebut secara otomatis.
Demikian juga, untuk menghentikan penanganan acara langsung:
Penangan acara langsung ini memiliki beberapa keterbatasan dibandingkan dengan acara reguler, tetapi mereka bekerja dengan baik untuk sebagian besar kasus.
Untuk info lebih lanjut lihat Dokumentasi jQuery .
UPDATE:
live()
dandie()
tidak digunakan lagi di jQuery 1.7. Lihat http://api.jquery.com/on/ dan http://api.jquery.com/off/ untuk fungsi penggantian yang serupa.UPDATE2:
live()
telah lama ditinggalkan, bahkan sebelum jQuery 1.7. Untuk versi jQuery 1.4.2+ sebelum 1.7 digunakandelegate()
danundelegate()
. Thelive()
contoh ($('button.someClass').live('click', someFunction);
) dapat ditulis dengan menggunakandelegate()
seperti itu:$(document).delegate('button.someClass', 'click', someFunction);
.sumber
Ganti fungsi anonim dengan fungsi bernama. Ini benar-benar mengungguli konteks jQuery, tetapi lebih berperan seperti ketika menggunakan jQuery, karena ketergantungannya pada fungsi callback. Masalah yang saya miliki dengan fungsi anonim sebaris, adalah bahwa mereka lebih sulit untuk di-debug (lebih mudah untuk melihat callstack dengan fungsi yang diberi nama berbeda, alih-alih 6 tingkat "anonim"), dan juga fakta bahwa beberapa fungsi anonim dalam waktu yang sama jQuery-chain bisa menjadi sulit untuk dibaca dan / atau dipertahankan. Selain itu, fungsi anonim biasanya tidak digunakan kembali; di sisi lain, mendeklarasikan fungsi yang bernama mendorong saya untuk menulis kode yang lebih mungkin untuk digunakan kembali.
Sebuah ilustrasi; dari pada:
Saya lebih memilih:
sumber
this
, Anda tidak bisa mendapatkan OO yang "tepat" tanpa menggunakan lampiran. Saya biasanya pergi untuk kompromi:$('div').click( function(e) { return self.onClick(e) } );
Mendefinisikan properti pada pembuatan elemen
Di jQuery 1.4 Anda bisa menggunakan objek literal untuk mendefinisikan properti saat Anda membuat elemen:
... Anda bahkan dapat menambahkan gaya:
Berikut tautan ke dokumentasi .
sumber
alih-alih menggunakan alias berbeda untuk objek jQuery (saat menggunakan noConflict), saya selalu menulis kode jQuery saya dengan membungkusnya semua sebagai penutup. Ini bisa dilakukan di dokumen. Sudah berfungsi:
atau Anda dapat melakukannya seperti ini:
Saya menemukan ini menjadi yang paling portabel. Saya telah mengerjakan situs yang menggunakan Prototipe DAN jQuery secara bersamaan dan teknik ini telah menghindari semua konflik.
sumber
instanceOf
tidak akan bekerja, hanya sajainstanceof
. Dan itu tidak akan berhasil, karenajQuery instanceof jQuery
akan kembalifalse
.$ == jQuery
adalah cara yang tepat untuk melakukannya.Periksa Indeks
jQuery memiliki .index tetapi sulit digunakan, karena Anda memerlukan daftar elemen, dan mengirimkan elemen yang Anda inginkan indeks dari:
Berikut ini jauh lebih mudah:
Jika Anda ingin mengetahui indeks suatu elemen dalam set (misalnya item daftar) dalam daftar tidak berurutan:
sumber
index()
dan mendapatkan indeks dari induknya.Singkatan untuk acara siap
Cara eksplisit dan bertele-tele:
Steno:
sumber
Pada fungsi jQuery inti, tentukan parameter konteks selain parameter pemilih. Menentukan parameter konteks memungkinkan jQuery untuk memulai dari cabang yang lebih dalam di DOM, bukan dari akar DOM. Diberikan DOM yang cukup besar, menentukan parameter konteks harus diterjemahkan ke keuntungan kinerja.
Contoh: Temukan semua input radio jenis dalam bentuk pertama dalam dokumen.
Referensi: http://docs.jquery.com/Core/jQuery#expressioncontext
sumber
$(document.forms[0]).find('input:radio')
melakukan hal yang sama. Jika Anda melihat sumber jQuery, Anda akan melihat: jika Anda meneruskan parameter kedua ke$
, itu akan benar-benar memanggil.find()
.$('form:first input:radio')
?Tidak hanya jQuery, tetapi saya membuat jembatan kecil yang bagus untuk jQuery dan MS AJAX:
Sangat menyenangkan jika Anda melakukan banyak ASP.NET AJAX, karena jQuery didukung oleh MS sekarang memiliki jembatan yang bagus berarti sangat mudah untuk melakukan operasi jQuery:
Jadi contoh di atas tidak bagus, tetapi jika Anda menulis kontrol server ASP.NET AJAX, membuatnya mudah untuk memiliki jQuery di dalam implementasi kontrol sisi klien Anda.
sumber
Mengoptimalkan kinerja penyeleksi yang kompleks
Query subset dari DOM saat menggunakan penyeleksi kompleks secara drastis meningkatkan kinerja:
sumber
Berbicara tentang Tip dan Trik dan juga beberapa tutorial. Saya menemukan serangkaian tutorial ini ( Seri Video "jQuery for Absolute Beginners") oleh Jeffery Way SANGAT MEMBANTU.
Ini menargetkan para pengembang yang baru mengenal jQuery. Dia menunjukkan cara membuat banyak hal keren dengan jQuery, seperti animasi, Membuat dan Menghapus Elemen dan banyak lagi ...
Saya belajar banyak dari hal itu. Dia menunjukkan betapa mudahnya menggunakan jQuery. Sekarang saya menyukainya dan saya bisa membaca dan memahami skrip jQuery apa pun meskipun rumit.
Berikut adalah satu contoh yang saya suka " Ubah Ukuran Teks "
1- jQuery ...
2- Styling CSS ...
2- HTML ...
Sangat merekomendasikan tutorial ini ...
http://blog.themeforest.net/screencasts/jquery-for-absolute-beginners-video-series/
sumber
Asinkron setiap fungsi ()
Jika Anda memiliki dokumen yang benar - benar kompleks di mana menjalankan fungsi jquery, masing-masing () mengunci browser selama iterasi, dan / atau Internet Explorer muncul pesan ' Anda ingin melanjutkan menjalankan skrip ini ', solusi ini akan menghemat hari.
Cara pertama Anda dapat menggunakannya sama seperti setiap ():
Sebuah 2 parameter opsional memungkinkan Anda menentukan kecepatan / delay di antara iterasi yang mungkin berguna untuk animasi ( contoh berikut akan menunggu 1 detik di antara iterasi ):
Ingat bahwa karena ini bekerja secara tidak sinkron, Anda tidak bisa mengandalkan iterasi yang harus diselesaikan sebelum baris kode berikutnya, misalnya:
Saya menulis ini untuk proyek internal, dan sementara saya yakin itu bisa diperbaiki, itu berhasil untuk apa yang kami butuhkan, jadi harap beberapa dari Anda merasa ini berguna. Terima kasih -
sumber
Syntactic shorthand-sugar-thing - Cache koleksi objek dan jalankan perintah pada satu baris:
Dari pada:
Saya lakukan:
Kasus penggunaan yang agak "nyata" bisa berupa sesuatu seperti ini:
sumber
$(this).siblings().removeClass("hover")
. Saya tahu ini kedengarannya seperti hal yang kecil, tetapi setiap kali Anda mengubah DOM peramban lain mungkin dipicu. Kemungkinan lain termasuk peristiwa yang melekat pada DOMAttrModified atau kelas yang mengubah ketinggian elemen yang dapat memecat pendengar acara "ukuran" lainnya.cache.not(this).removeClass("hover")
Saya suka mendeklarasikan
$this
variabel di awal fungsi anonim, jadi saya tahu saya bisa mereferensi jQueried ini.Seperti itu:
sumber
Simpan Objek jQuery dalam Variabel untuk Digunakan Kembali
Menyimpan objek jQuery ke variabel memungkinkan Anda menggunakannya kembali tanpa harus mencari kembali melalui DOM untuk menemukannya.
(Seperti yang disarankan oleh @Louis, saya sekarang menggunakan $ untuk menunjukkan bahwa variabel menyimpan objek jQuery.)
Sebagai contoh yang lebih kompleks, misalkan Anda memiliki daftar makanan di toko, dan Anda hanya ingin menunjukkan makanan yang cocok dengan kriteria pengguna. Anda memiliki formulir dengan kotak centang, masing-masing berisi kriteria. Kotak centang memiliki nama seperti
organic
danlowfat
, dan produk memiliki kelas yang sesuai -.organic
, dll.Sekarang Anda dapat terus bekerja dengan objek jQuery itu. Setiap kali kotak centang diklik (untuk memeriksa atau menghapus centang), mulailah dari daftar induk makanan dan saring berdasarkan pada kotak yang dicentang:
sumber
$
di depan. misvar $allItems = ...
$
menunjukkan bahwa ini adalah objek jQuery, yang akan membuatnya lebih mudah untuk membedakan secara visual dari variabel lain.Tampaknya sebagian besar tips menarik dan penting telah disebutkan, jadi yang ini hanya tambahan kecil.
Tip kecil adalah fungsi jQuery.each (objek, callback) . Semua orang mungkin menggunakan fungsi jQuery.each (callback) untuk beralih pada objek jQuery itu sendiri karena itu alami. Fungsi utilitas jQuery.each (objek, callback) berulang di atas objek dan array. Untuk waktu yang lama, saya entah bagaimana tidak melihat apa yang bisa terjadi selain dari sintaks yang berbeda (saya tidak keberatan menulis semua loop fashion), dan saya agak malu bahwa saya menyadari kekuatan utamanya baru-baru ini.
Masalahnya adalah karena tubuh loop di jQuery.each (objek, callback) adalah fungsi , Anda mendapatkan ruang lingkup baru setiap kali dalam loop yang sangat nyaman ketika Anda membuat penutupan di loop.
Dengan kata lain, kesalahan umum yang umum terjadi adalah melakukan sesuatu seperti:
Sekarang, ketika Anda menjalankan fungsi dalam
functions
array, Anda akan mendapatkan peringatan tiga kali dengan kontenundefined
yang kemungkinan besar tidak seperti yang Anda inginkan. Masalahnya adalah bahwa hanya ada satu variabeli
, dan ketiga penutupan merujuk padanya. Ketika loop selesai, nilai akhir darii
adalah 3, dansomeArrary[3]
iniundefined
. Anda bisa mengatasinya dengan memanggil fungsi lain yang akan membuat penutupan untuk Anda. Atau Anda menggunakan utilitas jQuery yang pada dasarnya akan melakukannya untuk Anda:Sekarang, ketika Anda menjalankan fungsi Anda mendapatkan tiga peringatan dengan konten 1, 2 dan 3 seperti yang diharapkan.
Secara umum, tidak ada yang tidak bisa Anda lakukan sendiri, tetapi menyenangkan untuk dimiliki.
sumber
Akses fungsi jQuery seperti yang Anda lakukan pada array
Tambah / hapus kelas berdasarkan pada boolean ...
Apakah versi ...
Tidak banyak kasus penggunaan untuk ini. Tidak pernah kurang; Saya pikir itu rapi :)
Memperbarui
Jika Anda bukan tipe pembaca komentar, ThiefMaster menunjukkan bahwa toggleClass menerima nilai boolean , yang menentukan apakah kelas harus ditambahkan atau dihapus. Jadi sejauh contoh kode saya di atas berjalan, ini akan menjadi pendekatan terbaik ...
sumber
$('selector').toggleClass('name_of_the_class', b);
.Memperbarui:
Cukup sertakan skrip ini di situs dan Anda akan mendapatkan konsol Firebug yang muncul untuk debugging di browser apa pun. Fitur tidak cukup lengkap tetapi masih cukup membantu! Ingatlah untuk menghapusnya saat Anda selesai.
Lihat tautan ini:
Dari Trik CSS
Pembaruan: Saya menemukan sesuatu yang baru; itu adalah JQuery Hotbox.
JQuery Hotbox
Google meng-host beberapa perpustakaan JavaScript di Google Code. Memuatnya dari sana menghemat bandwidth dan memuat cepat karena sudah di-cache.
Atau
Anda juga dapat menggunakan ini untuk mengetahui kapan suatu gambar dimuat penuh.
"Konsol.info" dari pembakar, yang dapat Anda gunakan untuk membuang pesan dan variabel ke layar tanpa harus menggunakan kotak peringatan. "console.time" memungkinkan Anda dengan mudah mengatur timer untuk membungkus banyak kode dan melihat berapa lama.
sumber
Gunakan metode penyaringan melalui penyeleksi semu jika memungkinkan sehingga jQuery dapat menggunakan querySelectorAll (yang jauh lebih cepat daripada mendesis). Pertimbangkan pemilih ini:
Pilihan yang sama dapat dilakukan dengan menggunakan:
Yang mana harus lebih cepat karena pemilihan awal '.class' kompatibel dengan QSA
sumber
Hapus elemen dari koleksi dan pertahankan rantai
Pertimbangkan yang berikut ini:
The
filter()
fungsi menghilangkan unsur-unsur dari objek jQuery. Dalam hal ini: Semua elemen-li yang tidak mengandung teks "Satu" atau "Dua" akan dihapus.sumber
Mengubah jenis elemen input
Saya mengalami masalah ini ketika saya mencoba untuk mengubah jenis elemen input yang sudah terpasang ke DOM. Anda harus mengkloning elemen yang ada, memasukkannya sebelum elemen yang lama, dan kemudian menghapus elemen yang lama. Kalau tidak, itu tidak bekerja:
sumber
Penggunaan skrip jQuery pihak ketiga secara bijak, seperti validasi bidang formulir atau penguraian url. Layak untuk mengetahui apa yang terjadi sehingga Anda akan tahu kapan Anda harus menghadapi persyaratan JavaScript berikutnya.
sumber
Line-break dan chainability
Saat menghubungkan beberapa panggilan pada koleksi ...
Anda dapat meningkatkan keterbacaan dengan linebreak. Seperti ini:
sumber
Gunakan .stop (benar, benar) ketika memicu animasi mencegahnya mengulangi animasi. Ini sangat membantu untuk animasi rollover.
sumber
Menggunakan fungsi anonim yang dijalankan sendiri dalam pemanggilan metode seperti
.append()
untuk mengulangi sesuatu. YAITU:Saya menggunakan ini untuk beralih melalui hal-hal yang akan besar dan tidak nyaman untuk keluar dari rantai saya untuk membangun.
sumber
Atribut data HTML5 mendukung, pada steroid!
Itu data telah disebutkan sebelumnya. Dengannya, Anda dapat mengaitkan data dengan elemen DOM.
Baru-baru ini tim jQuery telah menambahkan dukungan untuk atribut data- * kustom HTML5 . Dan seolah itu tidak cukup; mereka telah mencekoki fungsi data dengan steroid, yang berarti Anda dapat menyimpan objek kompleks dalam bentuk JSON, langsung di markup Anda.
HTML:
JavaScript:
sumber