2012-04-30 27 views
23

tôi là một chút khó khăn ở đây với kịch bản của tôi:Kiểm tra nếu các yếu tố tất cả trẻ em được ẩn

của nó một hộp kiểm lọc tất cả .notme hình ảnh và giấu nó mục danh sách. Vấn đề là bây giờ tôi không thể có được một chức năng gọi lại làm việc cho fadeToggle. Hành động sẽ như sau:

Nếu tất cả trẻ em của #list-team-single-container đều "không hiển thị" - hãy làm điều gì đó.

$('#show-only-my-teams').change(function(){ 
    $('.notme').each(function(){ 
     $(this).parent().parent().fadeToggle('fast', function(){ 
     }); 
    }); 
}); 
+1

đánh dấu của bạn là gì như thế nào? – rgin

+0

Bất kỳ nhãn hiệu nào, như ở trẻ em? –

Trả lời

53
if($('#list-team-single-container').children(':visible').length == 0) { 
    // action when all are hidden 
} 
+0

Thêm một, nhưng tôi khuyên bạn nên sử dụng '===' trên '=='. – Sablefoste

+1

Lưu ý rằng: hiển thị có nghĩa là nó chiếm dung lượng trên trang. Nếu nó được lồng trong các phần tử ẩn và hiện không được hiển thị, nó sẽ không được hiển thị là: hiển thị. Nếu bạn muốn chắc chắn rằng nó không phải là "display: none" thì điều này có thể không đủ. – Rikaelus

+0

Tuyệt vời làm việc như một say mê! –

10

Các jQuery selector :visible có thể là những gì bạn đang tìm kiếm ...

Từ description

Elements được coi là hiển thị nếu họ tiêu thụ không gian trong tài liệu. Các thành phần hiển thị có chiều rộng hoặc chiều cao lớn hơn 0.

Các thành phần có khả năng hiển thị: ẩn hoặc độ mờ: 0 được xem là hiển thị, vì chúng vẫn chiếm không gian trong bố cục. Trong hoạt ảnh ẩn phần tử, phần tử được coi là hiển thị cho đến khi kết thúc hoạt ảnh. Trong quá trình hoạt ảnh để hiển thị phần tử, phần tử là được coi là hiển thị khi bắt đầu hoạt ảnh.

http://api.jquery.com/visible-selector/


$('#list-team-single-container').children(':visible'); 

Đó dòng mã sẽ trở lại tất cả các phần tử con của #list-team-single-container có thể nhìn thấy.

$('#list-team-single-container').children(':visible').length; 

Đó dòng mã sẽ trở lại số phần tử con của #list-team-single-container có thể nhìn thấy.

+1

cảm ơn mô tả – ggzone

9

Thật khó để được cụ thể mà không thấy đánh dấu của bạn, nhưng tôi muốn tưởng tượng làm một cái gì đó như thế này:

var isVisible = 0; 

$('.notme').each(function() { 
    if($(this).is(":visible") { 
     isVisible++; 
    } 
}); 

if (isVisible == 0) 
    // do something 
+0

Bạn có thể muốn cấu trúc lại ví dụ của mình ... 'error' không thực sự là cách đúng để biểu diễn biến đó ...' visibleItems' có lẽ ... Cho nó tên biến 'error' có chút khó hiểu. Không có lỗi thực sự xảy ra ... – Lix

+0

Đúng, nhưng trong tâm trí của tôi nó, được hiển thị thay vì ẩn, là một lỗi trong logic tôi đã tạo ra. Vì vậy, tôi đặt lỗi. =) – rgin

+1

Ah! Có bạn đi - trong ** tâm trí của bạn ** - những gì về những người khác đến để đọc mã của bạn?Trường hợp tại điểm: P – Lix

Các vấn đề liên quan