jQuery .find 无法正常工作

jQuery .find not working properly

本文关键字:工作 常工作 find jQuery      更新时间:2023-09-26

HTML

<div id="t">
    <input type="button" class="theClass" />
    <input type="button" class="theClass" />
    <input type="button" class="notTheClass" />
</div>

爪哇语

var result = $('#t > input').find('.theClass').length;
console.log(result);

预期成果:2

实际结果:0

JSFiddle:这里。


来自 .find() 上的 jQuery specs

获取当前匹配集中每个元素的后代 元素,由选择器过滤

有人可以解释为什么.find()过滤掉所有元素而不是只返回我正在寻找的 2 个元素吗?

旁注: $('#t > input').length正确返回:3<</p>

div class="answers">

为什么使用 find ? 当你可以这样做时。

var result = $('#t > input.theClass').length;
$("#t > input").filter(".theClass")

http://jsfiddle.net/MTt4u/

您正在输入中查找,这是错误的,因为您不会找到任何东西。这样做:

var result = $('#t').find('input.theClass').length;

在您的代码中,您正在寻找'.theClass'作为input的子项。您需要做:

var result = $('#t input.theClass').length;

var result = $('#t').find('input.theClass').length;

可以很容易地完成

var result = $('#t > .theClass').length;

没有理由使用find().