1

メニューがあります。指定された値を指定して、テキストを返したいと思います。たとえば、0 は「ゼロ」を返し、1 は「1」を返します。現在どのオプションが選択されているかは気にせず、メニューを自動選択したくないことに注意してください。ただし、選択メニューを次のように使用したいだけです。プリミティブ データベース。これは、各オプションを繰り返し処理することなく、JavaScript または jQuery で簡単に実行できますか?

<select>
<option value="0">zero</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>

ありがとう

4

5 に答える 5

5

selectをデータベースとして使用する代わりに(単純な検索に高価な操作が必要です)、そこからデータ セットを一度作成してから、それを使用します...

var vals = $('select option').map(function(i, el) { return el.text; })
                             .toArray();
alert(vals[2]); // "two"

または、option値が順次0ベースのインデックスでない場合は、オブジェクトを使用します...

var vals = {};

$('select option').each(function(i, el) { vals[el.value] = el.text });

alert(vals[2]); // "two"
于 2012-04-10T20:39:42.500 に答える
3
var value = '3';
alert($('select option[value=' + value + ']').text());

ライブデモ

また、複数のドロップダウン リストがあるとセレクターが機能しないため、select に ID を指定してセレクターを更新することもできます。

alert($('#id_of_the_select option[value=' + value + ']').text());
于 2012-04-10T20:35:35.153 に答える
1

各オプションを反復せずに値をスキャンするには、他にどのようにすればよいでしょうか? あなたのためにそれを行う魔法のプロパティはありません。

ただし、次のコードを使用できます。

(function() {
    var sels = document.getElementsByTagName('select'), l = sels.length, i,
        opts, m, j, o;
    for( i=0; i<l; i++) {
        o = {};
        opts = sels[i].options;
        m = opts.length;
        for( j=0; j<m; j++) o[opts[j].value] = opts[j].text;
        sels[i].map = o;
    }
})();

の直前に置くと、ページ</body>上の任意のマップを見つけることができます。<select>

var sel = document.getElementById('mySelect');
alert(sel['0']);
于 2012-04-10T20:36:53.370 に答える
0

attribute-equals セレクターを使用します。

var valToSearchFor = 0;
    textFromOption = $('select option[value="' + valToSearchFor + '"]').text();

これは、探している値の存在をテストするためにすべてを繰り返しoptionますが、「舞台裏で」そうする必要がないようにします。

使用する可能性がありますquerySelectorAll()(上記の jQuery と多かれ少なかれ同じ表記ですが):

var valToSearchFor = 0;
    textFromOption = document.querySelectorAll('option[value="' + valToSearchFor + '"]').innerHTML;

もちろん、これにはブラウザが を実装している必要があり、すべてが実装しているquerySelectorAll()わけではありません (特に IE)。

参考文献:

于 2012-04-10T20:35:22.033 に答える
0

selected:セレクターを使用します。ページに記載されている例。

http://api.jquery.com/selected-selector/

 $("select").change(function () {
      var str = "";
      $("select option:selected").each(function () {
            str += $(this).text() + " ";
          });
      $("div").text(str);
    })
    .trigger('change');

「div」をトリガーしようとしているイベントに置き換えます

http://jsfiddle.net/ckaufman/aDU5E/1/

于 2012-04-10T20:36:09.537 に答える