2015-12-08 39 views
-1

我正在使用jQuery。我想找到與創建事件的元素最接近的類.hidebox。我試圖使用parent,findclosest,但它們都是指我的元素所在的層次。我只是在尋找最接近的.hidebox類,我可以找到我的事件元素。如何找到最近的事件元素

<tr> 
    <td></td> 
    <td> 
     <a href="#" class="hideBox-tab " >show div</a> 
    </td> 
</tr> 
<div class="hideBox" ></div> 

<tr> 
    <td></td> 
    <td> 
     <a href="#" class="hideBox-tab " >show div</a> 
    </td> 
</tr> 
<tr> 
</td> 
    <div class="hideBox" ></div> 
</td> 
</tr> 
$(".hideBox-tab").click(function(){ 
    $(this) 
     .parent().parent() 
     .find(".hideBox") 
     .toggle(); 
    return false; 
}); 
+0

請將您的HTML添加到問題中。我們無法告訴您如何在沒有看到的情況下遍歷DOM。 –

+4

感謝您的編輯。這個問題是因爲你的HTML無效 - 你不能讓'div'元素直接嵌套在'table'中。他們需要在「td」或「th」之內。 –

回答

0

如所建議的通過羅裏McCrossan;您的第一個hideBox直接出現在<table>標記中,無效;並且hideBox<td>出現在<tr>之外,這也是無效的。所以我用下面的HTML這是從你的有些不同,但我相信你想,只有

HTML:

<tr> 
    <td></td> 
    <td> 
     <a href="#" class="hideBox-tab " >show div</a> 
    </td> 
    <td> 
     <div class="hideBox" ></div> 
    </td> 
</tr> 
<tr> 
    <td></td> 
    <td> 
     <a href="#" class="hideBox-tab " >show div</a> 
    </td> 
    <td> 
     <div class="hideBox" ></div> 
    </td> 
</tr> 

jQuery代碼:

$(".hideBox-tab").click(function(){ 
    $(this).closest("tr").find(".hideBox").toggle(); 
    return false; 
}); 
0

儘管你的html您可以嘗試這樣做:

$(".hideBox-tab").click(function(){ 
 
    $(this) 
 
     .closest("tr") 
 
     .next("tr") 
 
    \t \t .find(".hideBox") 
 
     .toggle(); 
 
    return false; 
 
});
.hideBox { 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td> 
 
     <a href="#" class="hideBox-tab">show div</a> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <div class="hideBox">aaa</div>  
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <a href="#" class="hideBox-tab">show div</a> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <div class="hideBox">bbb</div>  
 
    </td> 
 
    </tr> 
 
</table>