2012-01-13 25 views
9

Tôi đã thực hiện một Jsbin nhanh: http://jsbin.com/ujabew/edit#javascript,html,liveTính chiều rộng lớn nhất của một tập hợp các yếu tố sử dụng jQuery

gì tôi đang cố gắng để đạt được là để tìm hiểu đó là <section> lớn nhất trong số 3 từ liên kết. Vì vậy, những gì tôi muốn là, sau khi vòng lặp chạy, là để có var width thiết lập số lượng lớn nhất có thể là bất kỳ chiều rộng có thể được.

Mã cơ bản dở dang được đăng tại link

+3

Thay vì chỉ thêm chiều rộng, hãy theo dõi chiều rộng tối đa được tìm thấy cho đến thời điểm này. 'var max = 0; vòng lặp (nếu this.width> max thì max = this.width); 'trong mã giả sai. –

+0

@MarcB Đó là mã psuedo khá tốt với tôi. –

Trả lời

31

đây:

var maxWidth = Math.max.apply(null, $(elems).map(function() { 
    return $(this).outerWidth(true); 
}).get()); 

Live Demo:http://jsfiddle.net/rM4UG/

+0

Thật tuyệt vời. – powerbuoy

+0

rất đơn giản, công việc tốt – einar

+0

Đẹp nhất. Khi tôi sử dụng này, nó đã được cho các yếu tố ngay bên trong cơ thể có lề: tự động (cho mục đích trung tâm). Nếu bạn đang làm một cái gì đó tương tự trong IE (chế độ tiêu chuẩn), loại bỏ sự thật được truyền vào hàm 'outerWidth' để loại bỏ các lề khỏi phép tính và bạn đang vàng! –

0

Tôi tin rằng bạn muốn nhìn vào thư viện underscore. Cụ thể, phương pháp max

0
$(document).ready(function(){ 
    var maxWidth = 0; 
    $('section').each(function(){ 
    w = $(this).outerWidth(true);  
    if (w > maxWidth) 
      maxWidth = w; 
    }); 
}); 
2

cho thịt comment Marc B, sử dụng Math.max():

$(document).ready(function(){ 
    var maxWidth = 0; 
    $('.content ul li').each(function(){ 
    var itemWidth = $(this).outerWidth(true); 
    maxWidth = Math.max(maxWidth, itemWidth) 
    }); 
}); 
0

Thay đổi .each() vòng lặp đến thi s:

var thisWidth = $(this).outerWidth(true); 

if (thisWidth > width) { 
    width = thisWidth; 
} 
0

Đây là ý tưởng của tôi

$ (document) .ready (function() {

var elements = $('.content ul li'); 
var count = elements.length -1; 
var width = [];   

elements.each(function(n){ 
    width.push($(this).outerWidth(true)); 
    if (count == n) { 

     width = Math.max.apply(Math, width); 

    } 
}); 

});

Tôi đã thêm số lượng phần tử và chạy Math.max để có số lớn nhất khi mỗi vòng lặp được thực hiện.

0

Tôi vừa viết một hàm về vấn đề này. Tôi nghĩ rằng nó có thể giúp đỡ người khác. (jQuery)

$.fn.largerWidth = function() { //function(p) 
            // where 'p' can be clientWidth or offsetWidth 
            // or anything else related to width or height 
    var s = this,m; 
    for (var i = 0; i < s.length; i++) { 
     var w = s[i].offsetWidth; // s[i][p]; 
     (!m || w > m) ? (m = w) : null 
    } 
    return m; 
} 
Các vấn đề liên quan