2

divの配列から選択したドロップダウンオプションのテキストを動的に取得しています。私がこれをするとき:

$("#divID").children("select").eq(0).find('option:selected').text();

すべてが正常に動作します。しかし、私がこれを行うとき:

$("#divID").children("select option:selected").eq(0).text();

期待どおりにテキストを取得しません。私は、テキストを取得するための後者のアプローチで何が間違っているのか疑問に思いました。ありがとう。

JSFiddle-最初のアプローチ(作品)

JSFiddle-2番目のアプローチ(機能しない)

4

3 に答える 3

4

あなたがしていることの問題はあなたの使用ですchildren

に変更childrenする場合は、find完全に機能します。その理由は、children作用を受けているセットの直接の子である要素のみを見つけるためです。したがって、の直接の子であるもののみが返され#divIDます。ご覧のとおり、option要素は直接の子ではないため、返すことはできません。

$("#divID").find("select option:selected").eq(0).text();

http://jsfiddle.net/nzhaD/5/を参照してください

もちろん、これら2つの間には微妙な違いがいくつかあります。このHTMLをCosnider:

<div id="divLocation">
    <div>            
        <select id="1"/>
    </div>
    <select id="2"/>
</div>

オプションを切り取りましたが、元のセレクターはID#2を取得します(これはの子である唯一の選択であるの#divLocationに対し、私のものはおそらくID#1にある最初に選択されたオプションを取得するためです。

したがって、ストーリーの教訓は、セレクターが実際にやりたいことを実行することです。:)

于 2012-08-06T14:58:17.370 に答える
2

私はこれをしただろう:

    value = $("#divLocation select option:selected").text();

どのアプローチが「正しい」か正確にはわかりません。私の理解は簡単だと思います。だから、あなたが読みやすいと思うものを選んでください。パフォーマンスが必要な場合は、純粋なjavascriptのみを使用し、selectにIDを持たせます。

document.getElementById("divLocationSelect").value;

http://jsfiddle.net/nzhaD/4/

于 2012-08-06T14:57:45.293 に答える
1

できるよ:

$("#divID").find("select option:selected").eq(0).text();

この方法は、DOMツリーを1レベル下に移動するだけで、複数レベルを下に移動して子孫要素(孫など)を選択できるという.children()点で異なります。.find().children().find()

.children()を参照してください

于 2012-08-06T15:01:33.700 に答える