2013-07-07 48 views
5

Giả sử tôi có một loạt các phần tử <span> có nội dung văn bản khác nhau.Lấy phần tử rộng nhất trong bộ jQuery

Làm cách nào tôi có thể nhận được <span> rộng nhất?

jQuery vẫn ổn. Tôi chỉ quan tâm đến việc xác định nhịp, chứ không phải giá trị của chiều rộng.

Câu hỏi tương tự là here. Nhưng họ chỉ nhận được giá trị của chiều rộng.

Đây là cách tôi muốn bắt đầu:

$('span').each(function(id, value){ 
    if ($(this).width() > w) { 
    largestSpan = id; 
    } 
}); 

Trả lời

15
var maxWidth = 0; 
var widestSpan = null; 
var $element; 
$("span").each(function(){ 
    $element = $(this); 
    if($element.width() > maxWidth){ 
    maxWidth = $element.width(); 
    widestSpan = $element; 
    } 

}); 
+1

Một phút giữa câu trả lời gần như giống hệt nhau. Upvoted cho rằng một mình. –

+0

Đây là một trong hai thanh lịch và nhỏ gọn hơn trong hai. : O – DevlshOne

+1

Đơn khiếu nại duy nhất của tôi ở đây là bạn đang tạo một đối tượng jQuery mới mỗi lần bạn làm '$ (this)'. Hiệu quả thực sự quan trọng trong một vòng lặp, vì vậy nó sẽ là tốt hơn để lưu trữ nó một lần. '$ element = $ (this)' và sau đó tham chiếu '$ element' thay vì' $ (this) 'mỗi lần. –

5

Sử dụng jQuery để xác định khoảng thời gian rộng nhất trong một div:

var oSpan;    // Container object for loop item 
var oWidest;   // Container object for current widest in loop 
var nWidth = 0;  // Int to store current span width 
var nWidest = 0;  // Int to contain widest items width 
var aWidest = [];  // Array to contain multiple matching spans 

// Call each function on spans within div 
$('#divContainer span').each(function(nIndex) 
{ 
    // Set reference to current span to avoid multiple calls per iteration 
    oSpan = $(this); 
    // Set current width to avoid multiple calls per iteration 
    nSpanWidth = oSpan.width(); 

    // Compare current width to widest width 
    if (nSpanWidth == nWidest) 
    { 
     // If exact,add to array and set current widest items 
     aWidest.push(oSpan); 
     oWidest = oSpan; 
     nWidest = nSpanWidth; 
    } 
    else if(nSpanWidth >= nWidest) 
    { 
     // If wider, reset array and set current widest item 
     oWidest = oSpan; 
     nWidest = nSpanWidth; 
     aWidest = [].push(oWidest) 
    } 
    else { } // Move along short stuff. 
}); 
Các vấn đề liên quan