2009-06-20 71 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; 

这里的好处是,将来您可以添加其他操作,如“编辑”等,而无需担心兄弟的位置。