2016-12-27 106 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 - 下一個兄弟。