<input type="radio" id="rad1" name="group" value="one">First Option</input><br>
<input type="radio" id="rad2" name="group" value="two">Second Option</input><br>
<input type="radio" id="rad3" name="group" value="three">Third Option</input><br>
<br>
<input type="radio" id="rad7" name="group2" value="one">First Option</input><br>
<input type="radio" id="rad8" name="group2" value="two">Second Option</input><br>
<input type="radio" id="rad9" name="group2" value="three">Third Option</input><br>
以下陈述为true
$('[value="one"]').length == 2
$('[name="group2"]').length == 3
那怎么来......
$('[value="one"]',$('[name="group2"]')).length == 0
我原本认为,对于name==group2
即value=="one"
的元素,我应该在1
的所有元素中有效地查看。为什么不是这样?
答案 0 :(得分:4)
此选择器,使用范围/上下文的第二个参数:
$('[value="one"]', $('[name="group2"]'))
尝试使用[value="one"]
找到<{1}} 从元素下降的元素[name="group2"]
。这意味着你最终会在DOM中查看至少两个不同元素的级别。
在你的情况下,你的单选按钮有两个属性,所以你想要连接两个属性选择器(我添加input
只是为了节省jQuery的一些工作):
$('input[name="group2"][value="one"]')
答案 1 :(得分:2)
我认为你想要的是:
$('[name="group2"][value="one"]')
这会选择name
属性的元素,其值group2
和 value
属性值为one
。
$(selector, element)
有所不同。它会找到与element
匹配的selector
的所有后代。请参阅documentation。
答案 2 :(得分:1)
$('input:[value="one"], input:[name="group2"]').length === 5
您必须使用一个字符串,逗号分隔。顺便说一句,编写像[anything=foobar]
这样的选择器是不好的做法。这是对通用选择器(*)的隐式用法,它会查询标记中的所有元素。
这将查询两个选择器并将结果一起添加到包装集中。如果您想查询拥有这两个属性的节点,请将其连接起来:
$('input:[value="one"][name="group2"]').length === 1
答案 3 :(得分:1)
您希望从one
找到值group2
:
$('input[name="group2"][value="one"]').length
这称为multiple-attribute-selector
(docs)。
请注意,我还添加了input
标记选择器。这是页面上的每个元素都不需要分析。
答案 4 :(得分:0)
尝试$('[value =“one”],[name =“group2”]')的长度