У меня есть список Див, который выглядит следующим образом:Определите DIV находится в середине списка сНа
<div class="item"></div>
<div class="item"></div>
<div class="item"></div> <!--the middle one-->
<div class="item"></div>
<div class="item"></div>
мне нужно определить, какой DIV находится в середине списка, пожалуйста, обратите внимание, что в DIV число динамическое, зависит от ввода пользователя. моя конечная цель - определить, какие divs находятся слева и справа от «среднего div», тогда применить класс зависит от его положения.
Конечный результат должен выглядеть следующим образом:
<div class="item left"></div>
<div class="item left"></div>
<div class="item center"></div> <!--the middle one-->
<div class="item right"></div>
<div class="item right"></div>
Я думал, чтобы добавить идентификатор номера для каждого DIV и использовать медиану, чтобы определить, «среднее» DIV, но я не совсем уверен.
Возможно, есть лучший подход для этой проблемы с использованием javascript, jquery или даже чистого css?
Update:
Дополнительная информация для обработки даже номер:
в случае, если список имеет четное число детей дивы, она должна делить его как этот
<div class="item left"></div>
<div class="item left"></div>
<div class="item left"></div>
<div class="item right"></div>
<div class="item right"></div>
<div class="item right"></div>
в моей проблеме, как Рори Маккроссан и пользователь3297291 хорошо работают. Я добавил некоторые изменения в оба из них для обработки четных чисел.
Рори McCrossan-х (с JQuery):
var $items = $('.item');
var middleIndex = Math.floor($items.length/2);
var hasMid = $items.length % 2;
console.log(middleIndex);
if(hasMid == 1){
$items.eq(middleIndex).addClass('middle')
.prevAll().addClass('left').end()
.nextAll().addClass('right');
}
if(hasMid == 0){
$items.eq(middleIndex).addClass('right')
.prevAll().addClass('left').end()
.nextAll().addClass('right');
}
user3297291-х:
var setMidClasses = function (elementList, beforeMid, atMid, afterMid) {
var i = 0,
hasMid = elementList.length % 2,
mid = Math.floor(elementList.length/2);
while (i < mid) {
elementList[i].classList.add(beforeMid);
i += 1;
}
if (hasMid == 1) {
elementList[i].classList.add(atMid);
i += 1;
}
while (i < elementList.length) {
elementList[i].classList.add(afterMid);
i += 1;
}
};
setMidClasses(document.querySelectorAll(".item"),
"left", "middle", "right");
чувствовать себя свободно редактировать фрагменты кода, как это может быть не очень аккуратным после моих правок.
Что произойдет, если у вас есть четное число '.item'-х годов? –