2012-02-02 39 views
11

Tôi đã cố gắng lấy danh sách giá trị độ cao của phần tử nhưng nó đã trở về 0.
Tôi đã thực hiện một số nghiên cứu và thấy rằng để có được chiều cao của phần tử, phần tử đó phải được hiển thị.
Nhưng tôi muốn kiểm tra chiều cao của nó khi nó bị ẩn. Nếu chiều cao của nó lớn hơn một số giá trị, hãy sử dụng một số chức năng, sau đó làm cho nó hiển thị. Có cách nào để làm điều này không?Jquery nhận được chiều cao của một phần tử ẩn

Ý tôi là: chiều cao

  1. Kiểm tra ẩn yếu tố của.
  2. Nếu giá trị OK có thể hiển thị.
  3. Nếu không có giá trị bắt buộc, hãy thực hiện một số chức năng.
  4. Làm cho hình ảnh hiển thị.
+2

bản sao chính xác của http://stackoverflow.com/questions/2345784/ jquery-get-height-of-hidden-element-in-jquery-1-4-2 – samccone

+2

nó hoạt động với các phần tử ẩn - http://jsfiddle.net/xgbEv/ –

+0

@ken redler: đó là giải pháp tốt nhất mà tôi tìm thấy về điều này. tôi chỉ cần sử dụng .appendTo ('body') vì nó không hoạt động với .show() – Guntram

Trả lời

17

Bạn có thể show nguyên tố này có được chiều cao và sau đó giấu nó, trực quan bạn sẽ không thấy bất kỳ sự khác biệt nào.

var height = $('elementSelector').show().height(); 
$('elementSelector').hide(); 
if(height != <<HeightToCompare>>){ 
    //Code here 
} 
//Finally make it visible 
$('elementSelector').show(); 

Demo

+0

Nó có thể sẽ nhấp nháy. – AlienWebguy

+1

Không, nó không nhấp nháy. Hãy xem http://jsfiddle.net/PdEbM/ – ShankarSangoli

+0

Tôi tought hiển thị một yếu tố sau đó ẩn nó sẽ gây ra một số vấn đề hình ảnh nhưng tôi thử nghiệm nó ngay bây giờ. Có, nó không làm cho bất kỳ vấn đề. Cảm ơn vì sự giúp đỡ. – Malixxl

6

Một cách là sao chép đối tượng, định vị bản sao ở bên ngoài khung nhìn, làm cho nó hiển thị, đo bản sao, sau đó phá hủy nó.

Vì vậy, bạn có:

<div id="maybe" style="display: none;"> 
    Something 
</div> 

Vì bạn đang sử dụng jQuery, bạn muốn làm điều gì đó như thế này:

$('#maybe') 
    .clone() 
    .attr('id','maybe_clone') // prevent id collision 
    .css({     // position far outside viewport 
    'position': 'absolute', 
    'left': '-1000px' 
    }); 

if($('#maybe_clone').show().height() > 200) { 
    $('#maybe').show(); 
} 

$('#maybe_clone').remove();  // housekeeping 
+0

+1, tạm thời hoặc vị trí đó hoàn toàn và di chuyển chính phần tử đó. Vì phần tử bị ẩn để bắt đầu, nó sẽ không làm phiền đánh dấu. –

+0

Nếu 'display: none' được áp dụng cho một phần tử cha, điều này sẽ không hoạt động. Một sửa chữa sẽ được tiêm bản sao bên ngoài đó là cha mẹ ban đầu: '.clone(). AppendTo ('body')'. –

+0

nhờ cung cấp cho tôi đầu mối để tính toán chiều cao div ẩn –

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