3

考虑到以下几点:

<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不知道在哪里搜索。

编辑:我可以完全控制源代码,所以如果逗号分隔的列表不理想,我可以进行更改。

4

2 回答 2

8

如果两个单词在不同的选项中具有相同的字母,则前面的答案会让您错误选择示例

<option value="us" data-countries="atx,chy">US</option>
<option value="de" data-countries="at,ch,li">German</option>

在上面的例子中,如果你使用前面的答案,它的值为“at”,它也会选择第一个选项(这是错误的)!


下面是正确的实现:

http://jsfiddle.net/E9qXe/

$(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); 
        }
    });
});
于 2013-10-10T14:12:20.187 回答
4

您需要查看数据属性本身,并在*=其中使用通配符(在任何地方搜索它)。

$('#select option[data-countries*="' + ccl + '"]')

此处显示的示例:

jsFiddle 演示

于 2013-10-10T13:57:25.267 回答