Jquery 选择最近的隐藏输入

Jquery 选择最近的隐藏输入,jquery,Jquery,我有以下几个部门: <div class="vote"> <input type="hidden" name="reply-id" value="83743"> <a class="vote-up-0" title="Vote Up This Comment">up</a> <a class="vote-down-0" title="Vote Down This Comment">down<

我有以下几个部门:

     <div class="vote">
     <input type="hidden" name="reply-id" value="83743">
     <a class="vote-up-0" title="Vote Up This Comment">up</a>
     <a class="vote-down-0" title="Vote Down This Comment">down</a>
     </div>


     <div class="vote">
     <input type="hidden" name="reply-id" class="reply-id" value="83745">
     <a class="vote-up-0" title="Vote Up This Comment">up</a>
     <a class="vote-down-0" title="Vote Down This Comment">down</a>
     </div>
试试这个代码

$(document).ready(function () {
    $('a.vote-up-0').click(function () {
        var id = $(this).parent().find('.reply-id').val();
    });
});

closest
的工作原理是沿着DOM树查找与选择器匹配的第一个元素。它只与祖先元素匹配。它在任何时候都不会查看同级元素

您要使用:


如果您想稍微概括一下,使用任何
输入
-元素名称,而不必知道父元素的名称,您可以使用:

var idOfHiddenInput = $(this).parent().find('input:hidden:first').attr('id');
参考资料:


为什么不将ID作为自定义属性附加到可单击对象本身。然后您可以使用
.attr
访问它。例如,您可以将
val
标记如下:

<a class="vote-up-0" title="Vote Up This Comment" val="2345">up</a>

这可能不需要隐藏字段

,因为您将隐藏元素包装在div中,也可以使用下面的方法

$(this).closest('div').find('input[name="reply-id"]').val() 

这将转到最近的DOM元素,并将找到名为“reply id”的隐藏输入元素。

jQuery选择没有
parent
属性。你的意思是
parent()
。如果我知道输入的名称,我会喜欢.find('.reply id')吗?
<a class="vote-up-0" title="Vote Up This Comment" val="2345">up</a>
$(this).attr("val")
$(this).closest('div').find('input[name="reply-id"]').val()