首创 - 它是如何工作的?
first-of-type - how does it work?
我的结构如下:
<div>
<input type="radio" value="A" />
<input type="radio" value="B" />
</div>
<div>
<input type="radio" value="C" />
<input type="radio" value="D" />
</div>
我想选择每个 div
中的第一个单选按钮,所以我这样做:
$('div :radio:first-of-type')
这让我回到了 AC...但是,我最近需要像这样标记其中一个单选按钮:
<div>
<input type="radio">C
<span><input type="radio">D</span>
</div>
现在参考资料让我回到了 ACD。所以我有两个问题:
1) 为什么会发生这种情况,即它究竟是如何工作的?和
2) 我怎样才能让代码像以前一样只带回 AC?
这是一个演示问题的 JsFiddle:http://jsfiddle.net/kh3js9ts/
提前致谢
引用 MDN:
The :first-of-type CSS pseudo-class represents the first sibling of its type in the list of children of its parent element.
D 是其 parent 元素中唯一的 child,即 span
.
您可以通过明确要求 div
:
的 children 来解决这个问题
$('div > :radio:first-of-type')
根据 jQuery 的 documentation、"The :first-of-type selector matches elements that have no other element with both the same parent and the same element name coming before it in the document tree."
给定
<span><input type="radio">D</span>
很明显,在文档树中没有其他元素具有相同的父级(跨度)和相同的元素名称(输入)。
以下内容对您有用吗?这应该输出 AC
$('.not').find(':radio:first').each(function() { s += $(this).val(); });
我分叉了一个新的fiddle
我的结构如下:
<div>
<input type="radio" value="A" />
<input type="radio" value="B" />
</div>
<div>
<input type="radio" value="C" />
<input type="radio" value="D" />
</div>
我想选择每个 div
中的第一个单选按钮,所以我这样做:
$('div :radio:first-of-type')
这让我回到了 AC...但是,我最近需要像这样标记其中一个单选按钮:
<div>
<input type="radio">C
<span><input type="radio">D</span>
</div>
现在参考资料让我回到了 ACD。所以我有两个问题:
1) 为什么会发生这种情况,即它究竟是如何工作的?和 2) 我怎样才能让代码像以前一样只带回 AC?
这是一个演示问题的 JsFiddle:http://jsfiddle.net/kh3js9ts/
提前致谢
引用 MDN:
The :first-of-type CSS pseudo-class represents the first sibling of its type in the list of children of its parent element.
D 是其 parent 元素中唯一的 child,即 span
.
您可以通过明确要求 div
:
$('div > :radio:first-of-type')
根据 jQuery 的 documentation、"The :first-of-type selector matches elements that have no other element with both the same parent and the same element name coming before it in the document tree."
给定
<span><input type="radio">D</span>
很明显,在文档树中没有其他元素具有相同的父级(跨度)和相同的元素名称(输入)。
以下内容对您有用吗?这应该输出 AC
$('.not').find(':radio:first').each(function() { s += $(this).val(); });
我分叉了一个新的fiddle