选择逗号分隔数据属性的项目

时间:2013-10-10 13:53:45

标签: jquery

考虑以下因素:

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

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

2 个答案:

答案 0 :(得分:7)

如果两个单词在示例

的不同选项中具有相同的字母,则前一个答案会出错
<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); 
        }
    });
});

答案 1 :(得分:4)

您需要查看data-attribute本身,并使用*=通配符(在任何地方搜索它)。

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

此处显示的示例:

<强> jsFiddle Demo