Câu hỏi Sử dụng jQuery để xem liệu div có một đứa trẻ với một lớp nhất định hay không


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ố gắng để có được jQuery để cho tôi biết nếu #popup có một trong những đoạn văn 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?


76
2018-05-10 17:21


gốc


Bạn đang tìm kiếm chỉ cho một đứa trẻ hoặc cho bất kỳ hậu duệ (con, cháu, cháu tuyệt vời, vv). Các tiêu đề câu hỏi hiện nay nói "con" nhưng câu trả lời xuất hiện để nói về con cháu tùy ý. - hippietrail
Vào thời điểm đó tôi tin rằng tôi đang tìm kiếm một đứa trẻ đặc biệt, 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à hậu duệ, và cũng có câu trả lời bao gồm trẻ em cụ thể và không phải con cháu, vì vậy tôi không chắc chắn những gì bạn đang cố gắng để có được. - Samsquanch
Ồ, chỉ khi sử dụng công cụ tìm kiếm để tìm câu hỏi cụ thể về việc tìm kiếm phần tử có con phù hợp với công cụ chọn, đây là phần tìm thấy, vì vậy tôi đã điều chỉnh tiêu đề câu hỏi nếu 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ác câu trả lời:


Bạn có thể dùng tìm thấy chức năng:

if($('#popup').find('p.filled-text').length !== 0)
   // Do Stuff

144
2018-05-10 17:23



Điều này thực sự làm việc như tôi cần nó, nhưng để tham khảo if($('#popup').has('p.filled-text').length != 0) { cũng hoạt động. - Samsquanch
Không cần phải kiểm tra 0. 0 là một falsey trong js. developer.mozilla.org/en-US/docs/Glossary/Falsy - ravi


Đây là một hasClass chức năng

if($('#popup p').hasClass('filled-text'))

29
2018-05-10 17:25





Sử dụng bọn trẻ funcion 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ố phần tử con khớp với bộ chọn.


6
2018-05-10 17:25



.size() trả về giống như .length tài sản 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. Đã cập nhật Answare! - Christopher Ramírez
Bạn được chào đón, nhưng vẫn còn một sai lầm. nó là .length không phải .length() - Johannes Klauß
: P Tôi nghĩ rằng nó là một chức năng giống như hầu hết các giao diện jQuery. Loại mâu thuẫn mà tôi nghĩ. Nhưng tốt, answare cập nhật một lần nữa: P Cảm ơn Johannes. - Christopher Ramírez
Các .length tài sản không phải là một phần của thư viện jQuery, nó chỉ là javascript gốc. Nhưng có, đôi khi nó có thể gây nhầm lẫn. - Johannes Klauß


Cách đơn giản

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

3
2018-05-08 06:20



sự khác biệt giữa kích thước () và chiều dài là gì?
Phương thức .size () có chức năng tương đương với thuộc tính .length; tuy nhiên, thuộc tính .length được ưu tiên vì nó không có phí của một cuộc gọi hàm. - Hitesh Modha
ref: api.jquery.com/size - Hitesh Modha


Nếu đó là một đứa trẻ trực tiếp, bạn có thể làm như dưới đây nếu nó có thể được lồng sâu hơn loại bỏ các>

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

1
2018-05-10 17:24