我似乎很难理解这些jQuery选择器的工作方式。
说你有这种HTML
<form>
<input type="hidden" name="something" value="1" class="class_name" />
<div>
<input class="blur_function" name="email" />
</div>
</form>
和下面的jQuery
$(document).ready(function(){
$('.blur_function').live('blur',function(){
// get the value of the hidden input above
var something = $(this).prev('.class_name').val();
});
});
我想像这个'prev('。class_name')会在代码中向上遍历,直到它被class =“ class_name”击中为止,但是我最终未定义,因为它仅遍历内部元素。
因此,我需要执行以下操作以超出父div并在先前的.class_name的范围内:
var something = $(this).parent().prev('.class_name').val();
是否有使用相同的html结构执行此操作的更快方法?
最佳答案
我会建议:
var something = $('.class_name', $(this).closest('form')).val();
选择所有直接子项输入:
var something = $('> .class_name', $(this).closest('form')).val();
仅选择形式的直接子代的第一个
.class_name
:var something = $('> .class_name:first', $(this).closest('form')).val();
jsFiddle demo