这让我感到非常悲痛,我几乎是肯定的,这是愚蠢的事。
为什么返回undefined而不是“Test”?
请参阅JSFiddle
<fieldset class="fieldset">
<select class="list">
<option selected="selected">Test</option>
</select>
</fieldset>
<script type="text/javascript">
alert($('.fieldset').children('select.list option:selected').val());
</script>
答案 0 :(得分:2)
答案 1 :(得分:1)
您需要使用find
代替children
。
children
为您提供选择器的直接后代,即只有一个级别。 find
搜索所有后代。否则,你就被发现了!
(请注意,如果select
中有多个fieldset
,您当前的选择器会立即获取所有这些内容。如果这不是您想要的,请使用获取您需要具体select
;在您的示例中,它将是$('.list').children('select.list option:selected').val()
答案 2 :(得分:1)
select.list
是.fieldset
的直接孩子,但option
不是。{/ p>
children
选择器应指定与.fieldset
的直接子项匹配的选择器,而这些子选项不是,而是它们是列表的子项。
children方法不是递归的,只查找直接子项/子项中不属于子项子项的匹配项。
您可以将select.list
选择器作为初始selector
的一部分,然后孩子将成为options
好的。与此类似:
alert($('.fieldset select.list').children('option:selected').val());
DEMO - 更正了选择器
此外,您还可以完全不使用子方法,如下所示:
alert($('.fieldset select.list>option:selected').val());
或者像这样:
alert($('select.list>option:selected', '.fieldset').val());
有很多方法可以做到这一点。
答案 3 :(得分:0)
alert($('.fieldset select.list option:selected').val());