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

Ger*_*obs 3 jquery

考虑以下因素:

<option value="de" data-countries="at,ch,li">German</option>
Run Code Online (Sandbox Code Playgroud)

如何创建一个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
}
Run Code Online (Sandbox Code Playgroud)

这个没有真正起作用,因为:contains它不知道在哪里搜索真的.

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

Mea*_*bed 7

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

<option value="us" data-countries="atx,chy">US</option>
<option value="de" data-countries="at,ch,li">German</option>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,如果您使用了上一个答案,它将使用值"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); 
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 好点子.但用2个字母的国家代码不会有问题.无论如何都要起来! (2认同)