无法让jQuery最接近工作

时间:2017-06-19 12:29:50

标签: javascript jquery

我似乎无法让jquery最接近我的列表项的父OL。

我的代码应该有效地说明如果列表包含8个以上的LI,应用类名...但只将类名应用于包含8个以上项目的列表的直接父级。

相反,它将类名应用于文档中的每个OL。

以下代码:

    var boxFilters = jQuery('.items li');
    //check if there are 8 or more filters
    if (boxFilters.length > 8) {
        //if so add a class to the parent OL
        boxFilters.closest("ol").addClass("boxed");
    }

HTML

   <ol class="items">
      <li>1</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
   </ol>

   <ol class="items">
      <li>1</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
      <li>6</lI>
      <li>7</li>
      <li>8</li>
      <li>9</li>
   </ol>

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

$(".items").has("li:eq(7)").addClass("boxed");

这将检查列表.items是否有第8个子元素(7因为:eq从零开始)并将类应用于它。

&#13;
&#13;
$(".items").has("li:eq(7)").addClass("boxed");
&#13;
.boxed{
  border: 1px solid black;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ol class="items">
  <li>Entry 1</li>
  <li>Entry 2</li>
  <li>Entry 3</li>
  <li>Entry 4</li>
  <li>Entry 5</li>
  <li>Entry 6</li>
  <li>Entry 7</li>
  <li>Entry 8</li>
</ol>
<ol class="items">
  <li>Entry 1</li>
  <li>Entry 2</li>
  <li>Entry 3</li>
</ol>
&#13;
&#13;
&#13;

<强>参考

.has()

:eq()