2009-06-20 45 views
5

當用戶點擊下面「li」末尾的img時,我想先獲取隱藏的輸入兩個元素的值。如何用Jquery選擇相鄰隱藏輸入的值?

<ul id="theLists"> 
    <li> 
    <input class="checkbox" type="checkbox" name="row"/> 
    <input class="contentId" type="hidden" value="64" name="id"/> 
    <div id="64" class="editable">Peanuts for me</div> 
    <img src="/img/delete.gif" alt="delete"/> 
    </li> 
</ul> 

我嘗試這樣做:

$(document).ready(function(){ 
    $("#theLists img").click(function(){ 
     var contentId = $(this).closest("input[name='id']").val();   
    }); 

無濟於事。有任何想法嗎?我需要設置一個var的行ID,在這種情況下是「64」。

回答

10

最接近(...)得到最接近的父節點,而不是最接近的兄弟節點。

事實上,有多種方式可以做你想做的事。

嘗試這些:

var contentId = $(this).siblings("input[name='id']").val(); 

var contentId = $(this).parent().children("input[name='id']").val(); 

var contentId = $(this).prev().prev().val(); 
+0

謝謝,使用兄弟的方法。同樣很好的知道可以使用複合prev()。 – kevtrout 2009-06-20 18:28:47

0

又好又便宜:

var contentId = $(this).parents('li:first').find('.contentId').val(); 
2

See complete solution here.

您可以將id屬性移到含<li>,刪除隱藏屬性,只是使用:

var contentId = $(this).parent().get(0).id; 

這裏的好處是,將來您可以添加其他操作,如「編輯」等,而無需擔心兄弟的位置。