2016-12-27 71 views
-2

我读了一个问题的答案,说closest()方法只适用于父元素。所以我做了一个例子,显示了三个<ul>元素和<li>孩子。我在第二个<ul>上应用了一个jQuery代码,以查看closest()方法是针对上一个最接近的元素还是下一个最接近的元素;我很惊讶它将目标元素作为目标,而这是第二个<ul>jQuery的最接近()方法的目标是当前元素,而不是最接近的元素

HTML

<ul class="ul-1"> 
    <li>UL 1 - Li 1</li> 
    <li>UL 1 - Li 2</li> 
    <li>UL 1 - Li 3</li> 
    <li>UL 1 - Li 4</li> 
</ul> 
<ul class="ul-2"> 
    <li>UL 2 - Li 1</li> 
    <li>UL 2 - Li 2</li> 
    <li>UL 2 - Li 3</li> 
    <li>UL 2 - Li 4</li> 
</ul> 
<ul class="ul-3"> 
    <li>UL 3 - Li 1</li> 
    <li>UL 3 - Li 2</li> 
    <li>UL 3 - Li 3</li> 
    <li>UL 3 - Li 4</li> 
</ul> 

jQuery的

$('.ul-2').closest('ul').css('background','red'); 

我使用的方法closest()错?

+1

该文档非常清楚[Clostest实际上是:](https://api.jquery.com/closest/) - *对于集合中的每个元素,获取与选择器匹配的第一个元素测试元素本身并遍历DOM树中的祖先*。我不确定这是甚么问题。 (因为'.ul-2'是'ul' jquery选择相同的元素) –

+0

这应该很容易通过阅读api文档来理清。在问这里之前,你需要做合理的研究 – charlietfl

回答

1

您正在寻找.siblings.prev

$('.ul-2').prev('ul').css('background','red'); 
  • .closest - 家长。
  • .prev - 上一个兄弟。
  • .next - 下一个兄弟。