Saya baru-baru ini meningkatkan versi PHPStorm IDE saya dan sekarang memperingatkan saya tentang penggunaan jQuery yang tidak efisien.
Sebagai contoh:
var property_single_location = $("#property [data-role='content'] .container");
Minta peringatan ini:
Memeriksa apakah penyeleksi jQuery digunakan dengan cara yang efisien. Ini menyarankan untuk memisahkan pemilih turunan yang diawali dengan pemilih ID dan memperingatkan tentang pemilih duplikat yang dapat di-cache.
Jadi pertanyaan saya adalah:
Mengapa ini tidak efisien dan apa cara efisien untuk melakukan selektor di atas?
Saya kira:
var property_single_location = $("#property").find("[data-role='content']").find(".container");
Apakah ini jalan yang benar?
Saya percaya perbedaan antara kedua metode saat menggunakan versi terbaru jQuery dan browser dapat diabaikan. Saya membuat tes yang menunjukkan bahwa sekarang sebenarnya 10% lebih cepat untuk melakukan selektor gabungan daripada pemilihan pada id dan kemudian menemukan kasus yang sangat sederhana:
http://jsperf.com/jquery-find-vs-insel
Untuk pemilihan beberapa anak berdasarkan kelas pada kedalaman apa pun, "temukan" tampaknya lebih cepat:
http://jsperf.com/jquery-find-vs-insel/7
Ada beberapa diskusi tentang ini di forum jQuery, tetapi sudah 3 tahun: https://forum.jquery.com/topic/which-jquery-selection-is-efficient Seperti yang mereka tunjukkan di sini, jika Anda melakukan banyak operasi pada pemilih id yang sama, peningkatan kinerja terbesar ditemukan dengan menyimpan elemen tingkat atas. Di sisi lain, jika Anda melakukan hanya beberapa pilihan, hampir tidak akan ada perbedaan kinerja.
Oleh karena itu, saya yakin IntelliJ melebih-lebihkan pentingnya gaya kode ini.
sumber
Pertanyaan pertama adalah menekan Alt + Enter, dan pilih tip pertama dalam daftar, lalu tekan Enter, Anda akan melihat cara yang menurutnya paling efisien.
sumber