2015-11-21 137 views
-1

我有这样的HTML代码:下一个()不选择一个元素

<div> 
    <li>list item 1</li> 
    <li>list item 2</li> 
    <li class="third-item">list item 3</li> 
    <li>list item 4</li> 
    <li class="fifth-item">list item 5</li> 
    <li>list item 5</li> 
    </div> 

这jQuery代码:

$("li.third-item").next(".fifth-item").css("background-color", "red"); 

这是为了这个<li>项目漆为红色:

<li class="fifth-item">list item 5</li> 

我试过各种各样的东西,但无法弄清楚发生了什么。

回答

1

next()元素后立即选择的兄弟姐妹,你的情况.fifth-item不是之后。所以,你需要使用nextAll()first()

  1. nextAll() - 让所有的兄弟姐妹元素
  2. first()旁边 - 从集合获得的第一个元素

$("li.third-item").nextAll(".fifth-item").first().css("background-color", "red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul> 
 
    <li>list item 1</li> 
 
    <li>list item 2</li> 
 
    <li class="third-item">list item 3</li> 
 
    <li>list item 4</li> 
 
    <li class="fifth-item">list item 5</li> 
 
    <li>list item 5</li> 
 
</ul>

+0

不需要使用'first()'。 OP可能想要选择所有元素(来自question_中的代码),或者只有一个具有该类的元素。 – Tushar

+0

@Tushar:如果他想要选择第一个元素,因为'next()'只会选择一个元素 –

+0

我不确定next()是否会立即选择元素之后的兄弟元素。我的问题特别与next()中的论点有关,而且我对所有这些都感到困惑。请参阅:http://stackoverflow.com/questions/33841748/confused-how-next-arguments-work – daremkd