Sử dụng jQuery để xem liệu một div có con với một lớp nhất định hay không


114

Tôi có một div #popupđược điền động với một số đoạn văn với lớp .filled-text. Tôi đang cố yêu cầu jQuery cho tôi biết nếu #popupcó một trong những đoạn này trong đó.

Tôi có mã này:

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

Bất kỳ đề xuất?


1
Bạn chỉ tìm kiếm một đứa trẻ hay cho bất kỳ hậu duệ nào (con, cháu, chắt, v.v.). Tiêu đề câu hỏi hiện nói là "con" nhưng các câu trả lời dường như nói về con cháu tùy tiện.
hippietrail,

Vào thời điểm đó, tôi tin rằng tôi đang đặc biệt tìm kiếm một đứa trẻ, nhưng thật khó để nhớ chắc chắn vì câu hỏi này đã gần 4 tuổi. Dù bằng cách nào, câu hỏi và câu trả lời bao gồm cả trẻ em và con cháu, và cũng có những câu trả lời dành riêng cho trẻ em chứ không phải con cháu, vì vậy tôi không chắc bạn đang cố gắng giải quyết vấn đề gì.
Samsquanch

Ồ, chỉ là khi sử dụng công cụ tìm kiếm để tìm một câu hỏi cụ thể về việc tìm kiếm một phần tử có phần tử con khớp với một bộ chọn, đây là phần tử nó tìm thấy, vì vậy tôi sẽ chỉnh sửa tiêu đề câu hỏi nếu nó không chính xác để giúp người khác tìm thấy câu hỏi đúng trong tương lai.
hippietrail,

Câu trả lời:




7

Sử dụng chức năng con của jQuery.

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

$.children('').length sẽ trả về số lượng các phần tử con khớp với bộ chọn.


1
.size()trả về giống như thuộc .lengthtính nhưng chậm hơn, vì vậy bạn nên thay thế nó.
Johannes Klauß

Cảm ơn Johnnes đã chỉ cho tôi điều đó! Tôi không biết điều đó. Đã cập nhật câu trả lời!
Christopher Ramírez

Bạn được chào đón, nhưng vẫn có một sai lầm. Nó .lengthkhông phải.length()
Johannes Klauß

: PI nghĩ rằng nó là một chức năng giống như hầu hết các giao diện jQuery. Tôi nghĩ kiểu không nhất quán. Nhưng tốt, câu trả lời được cập nhật một lần nữa: P Cảm ơn Johannes.
Christopher Ramírez

Các .lengthbất động sản không phải là một phần của thư viện jQuery, nó chỉ là javascript bản địa. Nhưng có, đôi khi nó có thể gây nhầm lẫn.
Johannes Klauß

4

Cách đơn giản

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

2
Phương thức .size () tương đương về mặt chức năng với thuộc tính .length; tuy nhiên, thuộc tính .length được ưu tiên hơn vì nó không có chi phí cho một lệnh gọi hàm.
Hitesh Modha

1

Nếu nó là con trực tiếp, bạn có thể làm như bên dưới nếu nó có thể được lồng sâu hơn, hãy xóa>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.