这可能听起来有点愚蠢,但是请你指出为什么在下面的脚本中'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函数。
答案 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);