考虑以下因素:
<option value="de" data-countries="at,ch,li">German</option>
如何创建一个将此选项设置为选定选项的jQuery选择器? (ccl
为小写国家/地区代码)
if ($("#select option[value='"+ccl+"']").length > 0) {
select.val(ccl); // Pick this one
} else {
$("#select:contains("+ccl+")").attr('selected', 'selected'); // Pick one from the country list
}
这个不起作用,因为:contains
不知道在哪里搜索。
编辑:我完全控制了源代码,所以如果逗号分隔列表不理想,我可以改变。
答案 0 :(得分:7)
如果两个单词在示例
的不同选项中具有相同的字母,则前一个答案会出错<option value="us" data-countries="atx,chy">US</option>
<option value="de" data-countries="at,ch,li">German</option>
在上面的例子中,如果您使用了上一个答案,它的值为“at”,它也将选择第一个选项(这是错误的)!
$(function () {
ccl = 'tx';
$('#select option').each(function(){
countries = $(this).attr('data-countries');
val = $(this).attr('value');
var countriesArr = countries.split(",");
if(jQuery.inArray(ccl,countriesArr) > -1){
$('#select').val(val);
}
});
});
答案 1 :(得分:4)
您需要查看data-attribute本身,并使用*=
通配符(在任何地方搜索它)。
$('#select option[data-countries*="' + ccl + '"]')
此处显示的示例:
<强> jsFiddle Demo 强>