web-dev-qa-db-ja.com

値がJQueryで選択リストにあるかどうかを確認します

JQueryを使用して、値がドロップダウンリストに属するかどうかを確認するにはどうすればよいですか?

106
user271507

Attribute Equals Selector を使用します

var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;

オプションの値がJavascriptを介して設定されている場合、機能しません。この場合、次のことができます。

var exists = false;
$('#select-box option').each(function(){
    if (this.value == 'bar') {
        exists = true;
        return false;
    }
});
168
Lachlan Roche

あなた(または他の誰か)がjQueryなしでそれを行うことに興味を持つかもしれない場合に備えて:

var exists = false;
for(var i = 0, opts = document.getElementById('select-box').options; i < opts.length; ++i)
   if( opts[i].value === 'bar' )
   {
      exists = true; 
      break;
   }
15
Marco Demaio

他の同様のオプションがあります。私の場合、選択リストを作成するときに別のボックスで値をチェックしています。比較するときに未定義の値にぶつかったので、次のようにチェックを設定しました。

if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }

このアプローチがもっと高価かどうかはわかりません。

9
cam_pdx

フィルターを使用しないのはなぜですか?

var thevalue = 'foo';    
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;

Exists> 0がtrue、existes == 0がfalseであるため、緩やかな比較が機能します。

if(exists){
    // it is in the dropdown
}

またはそれを組み合わせます:

if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
    // found
}

または、各選択ドロップダウンにselect-boxesクラスがある場合、これは値を含むselect(s)のjqueryオブジェクトを提供します:

var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
5
keV
if(!$('#select-box').find("option:contains('" + thevalue  + "')").length){
//do stuff
}
2
elaine

私はこれが古い質問の一種であることを知っています。

if(!$('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"] option[value="'+data['item'][i]['id']+'"]')[0]){
  //Doesn't exist, so it isn't a repeat value being added. Go ahead and append.
  $('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"]').append(option);
}

この例でわかるように、一意のタグデータドロップダウン名と選択したオプションの値で検索しています。もちろん、これらが機能するためにこれらは必要ありませんが、他の人があなたが複数の値などを検索できるように見えるようにそれらを含めました。

0
PhanFree