2

これは私に多くの悲しみを引き起こしています.

これが「テスト」ではなく未定義を返すのはなぜですか?

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

4 に答える 4

2

これを試して...

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

jsFiddle の

ご挨拶。

于 2013-01-28T20:14:34.307 に答える
1

findの代わりに使用する必要がありchildrenました。

childrenセレクターの直系の子孫、つまり1レベル下のみを提供します。findすべての子孫を検索します。そうでなければ、あなたはその場にいました!

(に複数ある場合は、現在のセレクターがそれらをすべて一度に取得することに注意してください。これが必要なものでない場合は、具体的に必要なものを使用selectしてください。例では、次のようになります。fieldsetselect$('.list').children('select.list option:selected').val()

于 2013-01-28T20:11:47.340 に答える
1

select.listの直接の子です.fieldsetが、optionそうではありません。

セレクターは、代わりにリストの子であるため、オプションではないchildren直接の子に一致するセレクターを指定する必要があります。.fieldset

childrenメソッドは再帰的ではなく、子の子ではなく、直接の子/子孫内でのみ一致を探します。

select.listセレクターをイニシャルの一部にすることができます。selectorそうすれば、子供たちは問題ありませんoptions。これに似ています:

alert($('.fieldset select.list').children('option:selected').val());

デモ- 修正されたセレクター


さらに、次のように children メソッドをまったく使用しないこともできます。

alert($('.fieldset select.list>option:selected').val());

またはこのように:

alert($('select.list>option:selected', '.fieldset').val());

もちろん、それを行う方法はたくさんあります。

于 2013-01-28T20:12:13.313 に答える
0
alert($('.fieldset select.list option:selected').val());
于 2013-01-28T20:33:53.297 に答える