2010-11-08 33 views

Trả lời

24

Như thế này:

var max = 0;  
$('table td').each(function() { 
    max = Math.max($(this).height(), max); 
}).height(max); 

Trong tiếng Anh đơn giản, lặp qua tất cả các tế bào và tìm giá trị lớn nhất, sau đó áp dụng giá trị đó để tất cả các tế bào.

+0

+1 bởi vì nó ngắn, nhưng bạn có thể tối ưu hóa nó. Bạn có thể xóa 'max === false ||' chẳng hạn. Và tôi nghĩ bạn nên di chuyển '$ (this) .height()' vào một biến, giúp bạn tiết kiệm một vài cú gọi hàm số – Harmen

+0

Đợi đã, bạn đã sửa nó. Đó là một giải pháp thực sự tốt Tôi nghĩ rằng – Harmen

+0

@Harmen, cảm ơn, bây giờ sử dụng 'Math.max()' mà đơn giản hóa nó khá một chút. –

0

several plugins có thể thực hiện việc này cho bạn. Tuy nhiên, mã sẽ trông như thế này:

var tallest = 0; 
$('table td').each(function() { 
    if (tallest < $(this).height()) { 
    tallest = $(this).height(); 
    } 
}); 

$('table td').css({'height': tallest}); 
-1

Bạn có thể sử dụng jQuery với đoạn mã sau


var maxHeight = 0; 
$('#yourTableID td').each(function(index, value) 
{ 
if ($(value).height() > maxHeight) 
maxHeight = $(value.height()); 
}).each(function(index, value) { 
$(value).height() = maxHeight; 
}); 

Hy vọng nó giúp

+0

Chờ đã, những gì đang diễn ra ở đây: '$ (value) .height() = maxHeight'. Bộ setter yêu cầu 'maxHeight' như một đối số hàm, trong khi không có đối số nào sẽ trả về chiều cao. Và tại sao bạn sẽ không sử dụng 'điều này' sau khi tất cả? – Harmen

3

Chỉ cần được khác nhau:

var heights = $('td').map(function() { 
    return $(this).height(); 
}).get(); 

var maxHeight = Math.max.apply(Math, heights); 

$('td').css('height', maxHeight); 
+0

Bạn có thực sự cần phải lưu chiều cao của tất cả các ô trong một mảng không? Điều này có nghĩa là bạn thực sự phải quét qua chúng ba lần. Lần đầu tiên để có được tất cả các đỉnh cao, một lần lặp thứ hai để có được chiều cao tối đa và lần thứ ba để thiết lập chiều cao tối đa. – Harmen

+0

Việc thu gom rác thải sẽ làm giảm sự quan tâm của mảng ở cuối. Bạn không nghĩ rằng so sánh mỗi và mọi chiều cao đều có một số sức mạnh của CPU? Math.max.apply() cực kỳ hiệu quả. Xin lỗi tôi đăng một cái gì đó khác với tiêu chuẩn. Nếu bạn đánh giá nó, nó sẽ thắng. Tôi thích cá nhân ví dụ của Tatu, mọi người hiểu chuỗi. –

+0

Bạn có thể ở ngay đó, tôi không thể hoàn tác phiếu giảm giá của tôi nữa, lần sau tôi chỉ thêm nhận xét trước khi tôi nhấn nút bỏ phiếu xuống – Harmen

0

đóng góp ví dụ của @tatu ulmanen

Điều này là hiển nhiên nhưng nếu bạn chỉ muốn strech các hàng với các tế bào cao bọc một vòng lặp tr :)

$('table tr').each(function(){ 
    var max = 0; 
    $(this).find('td').each(function(){ 
     max = Math.max($(this).height(), max); 
    }).height(max); 
}); 
Các vấn đề liên quan