2010-07-16 20 views
5

Ich denke, das ist eine sehr einfache Frage für jemanden, der mehr Erfahrung in Jquery hat.jquery. Wie bekommt man die Geschwisterhöhe?

wir zum Beispiel einfache HTML-Seite mit ein paar divs haben, und drei von ihnen haben die gleichen CSS-Klasse ‚sidebar‘

Jeder dieser ‚sidebar‘ divs haben unterschiedliche Inhalte und unterschiedliche Höhe.

Ich muss diese divs Höhe vergleichen und die längste finden.

Ich weiß, wie im Vergleich zu realisieren, aber ich weiß nicht, wie in JQuery ich jede dieser

nehmen

speichern ihren Wert in vairable oder Array divs.

+0

Sie angeben Höhe der div in sidebar Klasse oder ist es explizit angegeben? – JPReddy

+0

Nein, ich spezifiziere es nicht in der Klasse. – Ahmed

Antwort

4
$.each($('.sidebar'), function() { 
    var height = $(this).height(); 
}); 
+0

danke! JQuery zu lernen, aber manchmal ist es schwierig, einfache Dinge zu tun, weil ich nicht alle Ereignisse und Operatoren kenne. – Ahmed

+0

Gern geschehen. Im Zweifelsfall verwenden Sie die jQuery-Dokumentation: http://api.jquery.com/ – Calvin

+0

Was ist mit der Verwendung von 'jQuery.each' gegenüber dem einfachen alten' .each() '? Siehe meine Antwort für Links zu den beiden. –

0

Wenn ich die gleiche Sache zu tun hatte, ist dies der Code, den ich verwendet:

var tabPanels = $("..."); 
    var maxHeight = 0; 

    $.each(tabPanels, function() { 
     var height = $(this).height(); 
     maxHeight = (height > maxHeight) ? height: maxHeight; 
    }); 

    $.each(tabPanels, function() { 
     $(this).css("height", maxHeight + "px"); 
    }); 
13

Ich bin nicht sicher, warum die beiden so weit geschrieben Antworten jQuery.each() verwenden, anstatt nur each() Aufruf direkt, also hier ist was ich empfehlen würde:

$('#elementID').siblings().each(function() 
{ 
    var height = $(this).height(); 
}); 

Um jede Höhe in ein Array zu setzen:

var heights = []; 
$('#elementID').siblings().each(function() 
{ 
    heights.push($(this).height()); 
}); 

Oder benutzen Sie einfach map():

var heights = $('#elementID').siblings().map(function() 
{ 
    return $(this).height(); 
}).get(); 
+1

Ich versuchte '$ (this) .siblings.each (function() ...' und nichts passierte. Duhhh ... jetzt, da ich Deinen Code sah, erkannte ich, dass ich die Klammer vermisste! Geschwister() Das ist offensichtlich weil es eine Funktion ist. Verlorene 15 Minuten, die das debuggen. :) –

Verwandte Themen