如何使用Jquery选择相邻的隐藏输入框的值?

5
当用户点击以下“li”末尾的img时,我想获取前两个隐藏输入元素的值。
<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();          
    });

毫无效果。有什么想法吗?我需要设置一个变量,其中行ID是“64”。
3个回答

10

closest(...) 获取的是最近的父节点,而不是最近的兄弟节点。

实际上,有多种方法可以实现您想要的功能。

请尝试以下方法:

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

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

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

谢谢,使用兄弟方法。另外需要知道的是可以使用复合prev()。 - kevtrout
没有冒犯Jeff的意思,但是虽然这回答了你直接的问题,但如果你需要移动IMG标签,例如将其放在span或div中以进行样式设置,则这并不适用于你。 - tags2k
当然,它只回答了直接的问题。如果提到任何一般“如何设置此输入”之类的内容,我的回答将会不同。然而,如果问题指定了一种方法,我必须假设那就是需要的,而不是关于如何处理假设情况的建议。希望我听起来不冒犯,只是想澄清。 - Jeff Meatball Yang

2
您可以将id属性移动到包含的<li>中,删除隐藏字段并只需使用:

在此处查看完整解决方案。

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

这里的优点在于将来您可以添加其他操作,例如“编辑”等,而无需担心兄弟节点的位置。

0

好又便宜:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接