2009-10-14 4 views
3

Im пытаясь вычислить с различных элементов спискаКак рассчитать ширину элементов списка

мой HTML:

<ul> 

    <li style="disply:block; float:left">Some Text</li> 
    <li style="disply:block; float:left">Some More Text</li> 
    <li style="disply:block; float:left">Some Other Text</li> 

</ul> 

Im usind стандарт с функцией

var width = $('li').outerWidth()

Но это высчитывает та же ширина для каждого тега, основанного на первом.

Как я могу получить разную ширину? Что в конечном итоге я хотел бы иметь div после li с шириной li раньше ... если это делает ощущение?

<ul> 

    <li style="disply:block; float:left">Some Text</li> 
     <div style="width" /> 
    <li style="disply:block; float:left">Some More Text</li> 
     <div style="width" /> 
    <li style="disply:block; float:left">Some Other Text</li> 
     <div style="width" /> 

</ul> 

Большое спасибо за вашу помощь заранее.

+0

Disply должен быть дисплей. Не уверен, что это опечатка в вашей кодировке или когда вы публиковали это. –

ответ

7

$('li').outerWidth() получит ширину первого <li>, как вы выяснили.

From the docs

Получить внешнюю ширину (включает границы и отступы по умолчанию) для первого совпавшего элемента.

Нам нужна ширина каждого, поэтому примерно $.map() будет работать красиво. Это даст нам массив шириной

var widths = $.map($('li'), function(e) { 
    return $(e).outerwidth(); 
}); 

EDIT:

Как об этом

$('li').each(function() { 
    var $this = $(this); 
    var width = $this.outerWidth(); 
    $this.after($('<div style="width:' + width + 'px" >')); 
}); 
+0

Последний работает отлично. Должен это понять. Большое спасибо! – Dom

Смежные вопросы