Kiểm tra, sử dụng jQuery, nếu một phần tử là 'display: none' hoặc block on click


239

Tôi muốn kiểm tra và sắp xếp các yếu tố bị ẩn. Có thể tìm thấy tất cả các yếu tố với thuộc tính displayvà giá trị none?

Câu trả lời:


542

Bạn có thể sử dụng : hiển thị cho các phần tử hiển thị và : ẩn để tìm ra các phần tử ẩn. Các yếu tố ẩn này có displaythuộc tính được đặt thành none.

hiddenElements = $(':hidden');
visibleElements = $(':visible');

Để kiểm tra yếu tố cụ thể.

if($('#yourID:visible').length == 0)
{

}

Các yếu tố được coi là có thể nhìn thấy nếu chúng tiêu thụ không gian trong tài liệu. Các yếu tố hữu hình có chiều rộng hoặc chiều cao lớn hơn 0, Tham chiếu

Bạn cũng có thể sử dụng là () với:visible

if(!$('#yourID').is(':visible'))
{

}

Nếu bạn muốn kiểm tra giá trị của màn hình thì bạn có thể sử dụng css ()

if($('#yourID').css('display') == 'none')
{

}

Nếu bạn đang sử dụng hiển thị các giá trị sau đây displaycó thể có.

không trưng bày

Hiển thị nội dòng

hiển thị: khối

hiển thị: danh sách các mục

hiển thị: khối nội tuyến

Kiểm tra danh sách đầy đủ các displaygiá trị có thể ở đây .

Để kiểm tra thuộc tính hiển thị bằng JavaScript

var isVisible = document.getElementById("yourID").style.display == "block";
var isHidden = document.getElementById("yourID").style.display == "none"; 

tốt, trong kịch bản của tôi, mỗi phần tử có một ID, vì vậy thủ thuật này phù hợp với tôi :)
Nicholas Francis

2
@NicholasFrancis, tôi đã cập nhật câu trả lời của mình để tìm hiểu tất cả các yếu tố bị ẩn.
Adil

Có kiểm tra css nội tuyến cũng. Tôi có css display: block;viết nội tuyến đến từ jquery. tôi không thể kiểm tra nó với phương pháp của bạn. giúp tôi.
Gaurav Manral

JQuery đã được thêm và bạn đang truy cập phần tử sau khi được thêm vào DOM? Bạn có thể cho tôi xem mã? Sẽ tốt hơn để làm một bản demo trên jsfiddle.net
Adil

JavaScript đẳng là gì?
TheBlackBenzKid

56
$("element").filter(function() { return $(this).css("display") == "none" });

7
+1: Điều này thực sự hữu ích hơn câu trả lời được chấp nhận cho câu hỏi được hỏi , vì điều này sẽ hoạt động ngay cả khi phần tử cha có style="display: none;". Câu trả lời sử dụng :visible:hiddensẽ thất bại nếu bạn muốn hiển thị phần tử cụ thể và phần tử cha bị ẩn khi các bộ chọn đó trả về khả năng hiển thị tổng thể trên trang (không phải là câu hỏi được hỏi).
Mã hóa

Điều này hoạt động khi chạy thử nghiệm unite trong môi trường JS DOM.
b01

Đối với một plugin gắn thẻ, nó đã được thiết lập visibility: 'hidden';trong css, vì vậy kiểm tra kết thúc cũng kiểm tra:$(this).css('visibility') != 'hidden'
phyatt

30

Có, bạn có thể sử dụng các chức năng. Dưới đây sẽ tìm kiếm tất cả các div, nhưng bạn có thể sửa đổi nó cho bất kỳ yếu tố nào bạn cần

$('div').each(function(){

    if ( $(this).css('display') == 'none')
    {
       //do something
    }
});

13

Sử dụng điều kiện này:

if (jQuery(".profile-page-cont").css('display') == 'block'){
    // Condition 
}

11

Có hai phương thức trong jQuery để kiểm tra mức độ hiển thị:

$("#selector").is(":visible")

$("#selector").is(":hidden")

Bạn cũng có thể thực thi các lệnh dựa trên khả năng hiển thị trong bộ chọn;

$("#selector:visible").hide()

hoặc là

$("#selector:hidden").show()

6
Lưu ý: điều này sẽ không trả về thuộc tính hiển thị cụ thể của các yếu tố được chọn, như câu hỏi yêu cầu, :visiblecũng phụ thuộc vào khả năng hiển thị của tổ tiên cha mẹ. Nếu một tổ tiên là display: nonetất cả con cháu sẽ không thể nhìn thấy bất kể displaytrạng thái.
Mã hóa

10
$('#selector').is(':visible');

3
Lưu ý: điều này sẽ không trả về thuộc tính hiển thị cụ thể của các yếu tố được chọn, như câu hỏi yêu cầu, :visiblecũng phụ thuộc vào khả năng hiển thị của tổ tiên cha mẹ. Nếu một tổ tiên là display: nonetất cả con cháu sẽ không thể nhìn thấy bất kể displaytrạng thái.
Mã hóa
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.