我想问一下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。
答案 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>
不匹配。