jQuery .find无法正常工作

时间:2013-10-01 16:06:48

标签: javascript jquery

HTML

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

的Javascript

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

预期结果:2

实际结果:0

JSFiddle:here


来自jQuery specs on .find()

  

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

有人可以解释一下为什么.find()会过滤掉所有元素而不是仅仅返回我正在搜索的2吗?

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

5 个答案:

答案 0 :(得分:7)

你为什么使用find?当你能做到这一点。

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

$("#t > input").filter(".theClass")

http://jsfiddle.net/MTt4u/

答案 3 :(得分:0)

这可以通过

轻松完成
var result = $('#t > .theClass').length;

没有理由使用find()

答案 4 :(得分:0)

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

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

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