2009-08-05 7 views
2

Wie kann ich das breiteste Element (Breite in CSS oder als Attribut) auf einer Webseite mit jQuery finden?jQuery - breiteste Position auf Seite

+0

Whoa, breiteste Sache mit der Breite _explicitly_ gesetzt? – jason

+0

diese Breite? body document window screen –

Antwort

8

wird nicht schnell sein, sondern sollte den Trick

var widest = null; 
$("*").each(function() { 
    if (widest == null) 
    widest = $(this); 
    else 
    if ($(this).width() > widest.width()) 
    widest = $(this); 
}); 

tun dies den Trick tun sollte

diese Version etwas schneller sein könnte (aber definitiv nicht so clienat):

var widest = null; 
// remember the width of the "widest" element - probably faster than calling .width() 
var widestWidth = 0; 
$("*").each(function() { 
    if (widest == null) 
    { 
    widest = $(this); 
    widestWidth = $(this).width(); 
    } 
    else 
    if ($(this).width() > widestWidth) { 
    widest = $(this); 
    widestWidth = $(this).width(); 
    } 
}); 

I schlagen Sie auch vor, dass Sie die Art der Knoten begrenzen, die Sie durchgehen (dh verwenden Sie div anstelle von *)

+1

Möglicherweise möchten Sie outerWidth() bei Bedarf überprüfen. – Martin

+0

Vorsicht bei der Länge des DOM. Dieser Anruf kann teuer sein. –

+0

Macht Sinn, ich glaube, ich wünschte auf eine Art Max-Funktion. – Jeremy

2

G Antwort Antwort Niko!

Ich habe es leicht aufgebaut, so dass es nur die Elemente auf der Seite zeigt, die sichtbar sind, weil es manchmal Elemente zurückgibt, die eine große Breite haben, aber vielleicht display: keine gesetzt zum Beispiel;

var widest = null; 

$("*").each(function() { 
    if (widest === null && $(this).is(':visible')) { 
     widest = $(this); 
    } else if ($(this).is(':visible') && $(this).width() > widest.width()) { 
     widest = $(this); 
    } 
});