从fieldset中获取选定的选项

时间:2013-01-28 20:06:18

标签: jquery option fieldset

这让我感到非常悲痛,我几乎是肯定的,这是愚蠢的事。

为什么返回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>

4 个答案:

答案 0 :(得分:2)

试试这个......

alert($('.fieldset').children().val());

jsFiddle Example

问候。

答案 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());