关于Jquery的选择器(嵌套元素)

时间:2016-10-20 17:08:04

标签: javascript jquery

我想问一下Jquery语句$(selecterA:not(selectorB), elementA)是否意味着“返回匹配selectorA的那些元素而不是elementA中的selectorB”。因为我对以下简单案例Fiddle#1感到困惑。我可以知道为什么两个输出语句'.length将分别输出0而不是2和3?

然后我尝试删除div.inner <div class="child inner">。它仍然是0.我发现$('.child', outer).length也是0,这意味着outer元素中没有'.child'元素。但为什么$('input:not(.child input)', outer)会将这些输入排除在其中。

任何人都可以简要解释一下吗?我的概念有问题吗?提前谢谢。

更新1

由于某些原因,我需要仅在其级别内获取输入数量(不包括其嵌套子级)。由于其div.child内的输入级别可能是未知/动态的。我不能在这里简单地使用$('> input', outer)

我更新了Fiddler#3以显示问题。预期结果为2和3。

1 个答案:

答案 0 :(得分:0)

你的&#34;外部&#34; <div>还有一个&#34; child&#34;,因此外<input>内的<div>匹配.child input

.child input这样的选择器会匹配任何任何父元素与类<input>的{​​{1}},而不仅仅是直接父级。如果你删除&#34;孩子&#34;来自&#34;外部&#34; .child,然后是&#34;内部&#34;之外的两个<div>元素。 <input><div>不匹配。