Menggunakan jQuery untuk melihat apakah div memiliki anak dengan kelas tertentu


114

Saya memiliki div #popupyang secara dinamis diisi dengan beberapa paragraf dengan kelas .filled-text. Saya mencoba membuat jQuery memberi tahu saya jika #popupmemiliki salah satu paragraf ini di dalamnya.

Saya memiliki kode ini:

$("#text-field").keydown(function(event) {
    if($('#popup').has('p.filled-text')) {
        console.log("Found");
     }
});

Ada saran?


1
Apakah Anda hanya mencari anak atau keturunan (anak, cucu, cicit, dll). Judul pertanyaan saat ini mengatakan "anak" tetapi jawabannya tampaknya berbicara tentang keturunan yang sewenang-wenang.
hippietrail

Pada saat itu saya yakin saya sedang mencari anak secara khusus, tetapi sulit untuk mengingat dengan pasti karena pertanyaan ini hampir berusia 4 tahun. Apa pun itu, pertanyaan dan jawaban mencakup anak-anak dan keturunan, dan ada juga jawaban yang secara khusus mencakup anak-anak dan bukan keturunan, jadi saya tidak yakin apa yang Anda coba sampaikan.
Samsquanch

Oh, hanya saja saat menggunakan mesin telusur untuk mencari pertanyaan khusus tentang mencari elemen dengan anak yang cocok dengan pemilih, ini adalah yang ditemukannya, jadi saya akan mengubah judul pertanyaan jika tidak akurat untuk membantu orang lain menemukan pertanyaan yang tepat di masa depan.
hippietrail

Jawaban:




7

Gunakan anak funcion dari jQuery.

$("#text-field").keydown(function(event) {
    if($('#popup').children('p.filled-text').length > 0) {
        console.log("Found");
     }
});

$.children('').length akan mengembalikan jumlah elemen anak yang cocok dengan selektor.


1
.size()mengembalikan sama seperti .lengthproperti tetapi lebih lambat, jadi Anda harus menggantinya.
Johannes Klauß

Terima kasih Johnnes karena telah menunjukkan hal itu kepada saya! Saya tidak tahu itu. Answare diperbarui!
Christopher Ramírez

Sama-sama, tapi masih ada kesalahan. Ini .lengthbukan.length()
Johannes Klauß

: PI mengira itu adalah fungsi seperti kebanyakan antarmuka jQuery. Sepertinya tidak konsisten. Tapi yah, answare diperbarui sekali lagi: P Terima kasih Johannes.
Christopher Ramírez

The .lengthproperti bukan bagian dari perpustakaan jQuery, itu hanya javascript asli. Tapi ya, terkadang bisa membingungkan.
Johannes Klauß

4

Cara Sederhana

if ($('#text-field > p.filled-text').length != 0)

2
Metode .size () secara fungsional setara dengan properti .length; Namun, properti .length lebih disukai karena tidak memiliki overhead pemanggilan fungsi.
Hitesh Modha

1

Jika itu anak langsung Anda bisa melakukan seperti di bawah ini jika bisa bersarang lebih dalam, hapus>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.