Answers:
使用属性等于选择器
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为真,存在== 0为假,因此您可以使用
if(exists){
// it is in the dropdown
}
或结合使用:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
或者,在每个选择下拉列表都具有select-boxes类的地方,这将为您提供包含值的select的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转义的情况下从原始文本构建选择器字符串。