我有以下div:
<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>
Run Code Online (Sandbox Code Playgroud)
(是的,它是SO代码的blatent(ish)副本,我试图看看他们是如何做到的).因此,当用户点击投票或投票时,它应该找到隐藏的ID.
这似乎不起作用:
$('a.vote-up-0').click(function() {
var id = $(this).closest('.reply-id').val();
Run Code Online (Sandbox Code Playgroud)
lon*_*day 13
closest通过上升DOM树来查找匹配选择器的第一个元素.它不仅符合祖先元素.它决不会看到兄弟元素.
你想用siblings:
$(this).siblings('.reply-id').val();
Run Code Online (Sandbox Code Playgroud)
如果您想稍微概括一下,要使用任何input元素名称,而不必知道父元素的名称,您可以使用:
var idOfHiddenInput = $(this).parent().find('input:hidden:first').attr('id');
Run Code Online (Sandbox Code Playgroud)
参考文献: