Die Berechnung der Gesamtbreite aller Elemente der Liste?
Ich habe eine standard UL wie folgt:
<ul>
<li><a href="">Link</a></li>
<li><a href="">Link</a></li>
<li><a href="">Link</a></li>
<li><a href="">Link</a></li>
<li><a href="">Link</a></li>
</ul>
Ich bin auf der Suche nach einer quick & effiziente Weise zu berechnen, die in Kombination mit allen LI-tags. Derzeit habe ich:
var width = 0;
$('ul li').each(function() {
width += $(this).outerWidth();
});
Ich Frage mich nur, wenn es ist ein schneller Weg, um das gleiche Ergebnis ohne die Verwendung einer Schleife?
Vielen Dank für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen genau, was Sie nach, Nein, es ist nicht. Dies ist nicht nur ein Fall, das passt gut mit vorhandenen Funktionen, eine Schleife, wie Sie es haben ist der Schnellste Weg. Es ist die Rede, daß ein
.childWidth()
oder etwas in Kern...aber ich würde nicht meinen Atem halten 🙂Die anderen Antworten auch die Eltern Breite einschließlich extra-Raum, das ist in der Regel nicht, was Sie nach, so für jetzt...stick mit der Schleife wie Sie haben. Etwas kürzer, die Hinzugefügt wird, wird nur über garantiert tun die gleiche Menge an Arbeit (möglicherweise identisch-code), die sich unter trotzdem.
Können Sie die Breite der ul-element selbst, sondern geben Sie die Breite einschließlich die Kugeln und die Margen:
Wenn dies ist ein Menü und die Elemente werden nebeneinander (und nicht unten), versuchen
$('ul').outerWidth()
.[EDIT] Wenn die Breite des
ul
behoben wird, suchen Sie dann das Letzte element der Liste und haben einen Blick auf seinen Recht ausgeglichen. Seit der offset ist ja auch immer relativ zum übergeordneten element, alles, was Sie tun müssen, ist fügen SieoffsetLeft
undoffsetWidth
um die Gesamtbreite aller Kinder.