javascript - 改变中位数li前后li的css

标签 javascript jquery css html-lists median

我正在尝试制作无论数量多少都会对齐元素的导航。在 else 中,我试图在 median-li 之前和之后给 li 某些 css。目前所有 li 都是黄色的,因为 index 数字在完成循环后将始终大于中位数。我的 js 知识不是很好,但我每天都在学习 :)

var count = $("ul.filter__dropdown li").length;

if ( (count & 1) == 0 ) {
    //even
    var w = 100;
    var list = $("ul.filter__dropdown li");
    list.css('width', "calc( 100% /" + count + ")");
}
else {
    //odd
    var median = Math.round(count /= 2);
    var list = $("ul.filter__dropdown li");
    var count = $("ul.filter__dropdown li").length;
    list.css('width', "calc( 100% /" + count + ")");

    $("ul.filter__dropdown li").each(function(index) {

        if ( index < median ) {
            list.css("background-color" , "black");
        }

        if ( index == median ) {
            list.css("background-color" , "green");
        }

        if ( index > median ) {
            list.css("background-color" , "yellow");
        }
    })
}

最佳答案

您可以使用 :lt:gt选择器选择中位数之前的 li 元素和 之后 一些索引,即分别选择中位数。

var total = $('li').length,
  median = Math.floor(total / 2);

$('li:lt(' + median + ')').addClass('green');
$('li:gt(' + median + ')').addClass('red');
// $('li').eq(median).addClass('median');
li {
  color: yellow;
}
.green {
  color: green;
}
.red {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
</ul>

关于javascript - 改变中位数li前后li的css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32581472/

相关文章:

jquery - 为什么这段 JavaScript 代码没有禁用该按钮?

javascript - 跨域 Javascript 嵌入,不适用于 IE 版本

javascript - 状态在 react 中更新

javascript - 如果错误,请重新选中复选框

css - 如何将 Bootstrap div 与 'spanX' 类居中?

javascript - 如何从本地目录加载图像并在reactjs应用程序中显示它们?

javascript - 如何使用 jQuery 在页面加载时找到选定的单选按钮?

java - Spring MVC中无法通过ajax调用绑定(bind)ModelMap

jquery - 获取范围之外的 JSON 数据

html - CSS 下拉菜单/容器?