У меня есть список html:
<ul>
<li> first element </li>
<li> second element </li>
<li> third element </li>
<li> 4th element </li>
....
</ul>
с jquery, я хочу назначить для первой <li>
ширину равную 10%, а для других <li>
(ко второй до последней) остальная ширина делится на числа чисел <li>
(например, 90%/5)
Я должен исключить <li>
exist un sublist
Как это сделать с помощью JQuery?
вы можете использовать функцию внутри css()
и назначить правую ширину, используя этот метод только один раз
var li = $('#outermostlist > li');
li.css('width', function(i) {
return (i === 0)? '10%' : (90 / (li.length - 1)) + '%';
})
пример скрипки http://jsfiddle.net/hzHUn/3/
(Представление Firebug для 4 элементов и 1 вложенный список)
Разумеется, обратите внимание на результат, полученный в 90/(li.length - 1)
: в некоторых случаях сумма всех значений может быть больше 100%
, и это может быть не совсем то, что вы хотите: так что, если это так, просто обязательно округлите результат каким-либо образом до предыдущего нижнего целого числа (например, ~~(90/(li.length - 1)))
;
Пытаться
var $lis = $('ul > li');
$lis.eq(0).css('width', '10%');
$lis.slice(1).css('width', (90 / ($lis.length - 1)) + '%');
Мое предложение было бы установить width
для первого li
в CSS, а остальное - с помощью jQuery, как показано ниже:
CSS:
li:first-child{
width: 10%;
}
JQuery:
$(document).ready(function () {
var itemWidth = Math.floor(90/($('ul > li').length - 1)); //using Math.floor to make sure it doesn't go beyond 100%
$('ul > li:not(:first)').css('width', itemWidth + '%');
});
EDIT: IE <= 6 не поддерживает first:child
CSS, поэтому приведенную ниже строку сценария можно использовать в jQuery для стилизации первого элемента li
.
$('ul > li:first').css('width', '10%');
вы можете попробовать следующее:
JS
$("#myul li:eq(0)").width("10%").css("background", "yellow");
$("#myul li:gt(0)").width("90%").css("background", "red");
обратите внимание, что цвет bg - это просто, чтобы лучше визуализировать результат
FIDDLE http://jsfiddle.net/U9tcV/