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。
获取当前匹配组中每个元素的后代 元素,由选择器过滤
有人可以解释一下为什么.find()
会过滤掉所有元素而不是仅仅返回我正在搜索的2吗?
旁注:
$('#t > input').length
正确地返回:3
答案 0 :(得分:7)
你为什么使用find?当你能做到这一点。
var result = $('#t > input.theClass').length;
答案 1 :(得分:3)
你在输入中查看,这是错误的,因为你找不到任何东西。这样做:
var result = $('#t').find('input.theClass').length;
答案 2 :(得分:3)
$("#t > input").filter(".theClass")
答案 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;