jQuery查找功能需要帮助

时间:2009-06-02 09:51:03

标签: jquery

这可能听起来有点愚蠢,但是请你指出为什么在下面的脚本中'firstValue'是未定义的,'secondValue'是根据需要,即4。

<div >
<input class="feedback-selected"  type="hidden" value="4" />
</div>    
<script type="text/javascript">

    var firstValue = $(this).find('.feedback-selected').val();
    var secondValue = $('.feedback-selected').val();
    alert(firstValue);
    alert(secondValue);

</script>

我确信我没有使用find函数。

6 个答案:

答案 0 :(得分:5)

在您的示例中没有值,因此find()函数将找不到任何内容。

仅在实例函数或事件处理程序中有效)

答案 1 :(得分:1)

答案 2 :(得分:0)

什么激活说...如果你需要使用.find()

你可以使用$(document)代替$(this)

答案 3 :(得分:0)

activa的回答是正确的。 $("<selector>")相当于您尝试对第一次搜索所做的操作。 find("<selector>")用于在包装集内搜索,而不是作为起点。

但是,我想补充一点,在这种情况下检索值的更好方法是:

var value = $("input.feedback-selected").val();

这是因为包含元素的类型将允许jQuery以更快的方式搜索DOM。

答案 4 :(得分:0)

find()搜索您调用它的jQuery对象的后代元素。你在$(this)的结果上调用find(),这没什么。如果要在文档上调用find(),则必须使用$(document)。

答案 5 :(得分:0)

您的示例中的

this不是包含“反馈选择”类的子元素的DOM元素,因此find函数无法找到它们。它甚至可能不是DOM元素。

我会注意到$(this)在指向DOM元素的任何地方都是有效的。因此,如果您在触发从DOM元素调用的函数的任何时候,您都可以。这就是本案的范围。这也是有效的:

function aha() {
 alert($(this).find('.feedback-selected').val());
}

aha.apply(document);