Menggunakan jQuery, saya secara terprogram menghasilkan banyak div
seperti ini:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Di tempat lain dalam kode saya, saya perlu mendeteksi apakah DIV ini ada. Nama kelas untuk div adalah sama tetapi perubahan ID untuk setiap div. Adakah yang tahu cara mendeteksi mereka menggunakan jQuery?
:first
di sana akan membantu kinerja (tidak tahu apakah kinerja merupakan kriteria penting untuk @itgorilla), tetapi apakah itu bervariasi secara liar oleh peramban, mungkin karena itu mengubah fitur asli yang dapat digunakan jQuery untuk melakukan pilihan. Inilah kasus uji di mana div itu ada , dan di sini ada di mana itu tidak ada .if (!$(".mydivclass")[0]){ /* do stuff */ }
Anda dapat menggunakan
size()
, tetapi jQuery menyarankan Anda menggunakan panjang untuk menghindari overhead panggilan fungsi lain:Begitu:
http://api.jquery.com/size/
http://api.jquery.com/length/
MEMPERBARUI
Jawaban yang dipilih menggunakan tes perf, tetapi sedikit cacat karena itu juga termasuk pemilihan elemen sebagai bagian dari perf, yang bukan apa yang sedang diuji di sini. Berikut ini adalah tes perf yang diperbarui:
http://jsperf.com/check-if-div-exists/3
Uji coba pertama saya menunjukkan bahwa pengambilan properti lebih cepat daripada pencarian indeks, meskipun IMO itu cukup dapat diabaikan. Saya masih lebih suka menggunakan panjang untuk saya itu lebih masuk akal dengan maksud kode daripada kondisi yang lebih singkat.
sumber
.length
saat ini menawarkan kinerja rata-rata terbaik.Tanpa jQuery:
JavaScript asli selalu akan menjadi lebih cepat. Dalam hal ini: (contoh)
Jika Anda ingin memeriksa untuk melihat apakah elemen induk berisi elemen lain dengan kelas tertentu, Anda bisa menggunakan salah satu dari berikut ini. (contoh)
Atau, Anda dapat menggunakan
.contains()
metode pada elemen induk. (contoh)..dan akhirnya, jika Anda ingin memeriksa untuk melihat apakah elemen yang diberikan hanya berisi kelas tertentu, gunakan:
sumber
sumber
div
elemen pada halaman, kemudian kembali dan loop melalui mereka untuk melihat apakah mereka memiliki kelas itu, semua membuang array di akhir).hasClass
adalah 33% lebih cepat dari penyeleksi lainnya di sini. Periksa jsperf.com/hasclass00div
elemen) yang meminggirkan masalah yang saya soroti (membuat array). Cobalah dengan sekelompok div : jsperf.com/hasclass00/2 Ini 63% lebih lambat pada salinan Chrome saya, 43% lebih lambat pada salinan Firefox saya, 98% (!) Lebih lambat di Opera. Tetapi lebih lanjut, masuk akal bahwa lebih lambat untuk membangun daftar divs dan kemudian mencarinya, daripada memberikan mesin pemilih semua informasi yang dibutuhkan.Ini adalah solusi tanpa menggunakan Jquery
tautan referensi
sumber
Sederhana saja ...
sumber
Untuk menguji
div
elemen secara eksplisit:if( $('div.mydivclass').length ){...}
sumber
.mydivclass
tergantung pada versi browser dan jQuery.div
bagian dari pemilih.Kode sederhana diberikan di bawah ini:
Untuk menyembunyikan div dengan id partuler:
sumber
Berikut ini beberapa cara:
Kita dapat menggunakan salah satu cara yang ditentukan di luar negeri berdasarkan persyaratan.
sumber
The
size()
Metode hanya mengembalikan jumlah elemen yang yang ditunjuk oleh pemilih jQuery - dalam hal ini jumlah elemen dengan kelasmydivclass
. Jika mengembalikan 0, ekspresi salah, dan karena itu tidak ada, dan jika mengembalikan nomor lain, div harus ada.sumber
length
properti? Juga, ini memeriksa elemen apa pun dengan kelas itu, bukan hanya adiv
. (Sekarang, itu mungkin yang dimaksud OP, bahkan jika bukan apa yang dia katakan.) Lihat jawaban Stefan Kendall yang melakukan apa yang sebenarnya dikatakan OP (meskipun, sekali lagi, mereka mungkin berarti apa yang telah Anda lakukan).div
bagian itu, karena dua alasan: 1) pemilih tidak terikat dengan fakta bahwa OP menggunakandiv
elemen (itu bisa berubah di masa depan), dan 2) di sebagian besar browser dan versi jQuery, AFAIK, ini harus lebih cepat.length
properti di sana, mengapa tidak menggunakannya? Tetapi jika itu pilihan Anda, wajar saja. Di sisi lain, saya tidak tahu Anda telah mengeditnya. Jika saya akan melakukan itu, saya akan meninggalkannya (lagi, dia secara khusus mengatakan "... jika div dengan ..." (penekanan saya) dan kemudian menyebutkan tambahan bahwa jika tidak masalah apakah itu itudiv
atau tidak, Anda bisa parit bagian itu. Tapi apa pun. :-)size()
metode ini ada untuk memperjelas bahwa Anda menghitung jumlah elemen dalam pemilih jQuery, dan bukan sembarang array lama. Tetapi sekali lagi, itu hanya kesukaan saya.periksa apakah div ada dengan kelas tertentu
sumber
sumber
sumber
Di Jquery Anda dapat menggunakan seperti ini.
Dengan JavaScript
sumber
Berikut ini adalah contoh solusi untuk kelas cek (hasClass) dalam Javascript:
sumber
Cara terbaik dalam Javascript:
sumber
if ($ ("# myid1"). hasClass ("mydivclass")) {// Lakukan apa saja}
sumber
Gunakan ini untuk mencari seluruh halaman
sumber