JQueryを使用して、値がドロップダウンリストに属しているかどうかを確認するにはどうすればよいですか?
JQueryを使用して、値がドロップダウンリストに属しているかどうかを確認するにはどうすればよいですか?
回答:
等しい属性セレクタを使用する
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;
}
});
return false
?
あなた(または他の誰か)が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;
}
フィルターを使用しないのはなぜですか?
var thevalue = 'foo';
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;
存在する> 0はtrue、存在する== 0はfalseであるため、緩やかな比較が機能します。
if(exists){
// it is in the dropdown
}
またはそれを組み合わせる:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
または、各選択ドロップダウンにselect-boxesクラスがある場合、これにより、値を含む選択のjqueryオブジェクトが得られます。
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
私はこれが古い質問の一種であることを知っています。
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);
}
この例でわかるように、一意のタグのデータドロップダウン名と選択したオプションの値で検索しています。もちろん、これらが機能するためにこれらは必要ありませんが、他の人が複数の値を検索できることなどを他の人に見られるように含めました。
]
、「\」などの任意の文字を含むオプション値を許可するため、より安全です。適切なCSSエスケープを行わずに、生のテキストからセレクター文字列を構築しないでください。