我似乎很难理解这些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

07-24 16:58
查看更多