jquery使用like设置选项的选定属性

时间:2014-04-24 08:46:27

标签: jquery

如何设置从以下选择框中选择的ubuntu我尝试了以下

<select>
<option value="val1">Val 1</option>
<option value="val2">Val 2</option>
<option value="val3">Val 3</option>
<option value="val3">Ubuntu -12.04 amd......</option>
</select>


$('#image_id').find('option[text="ubuntu"]').attr('selected');

3 个答案:

答案 0 :(得分:1)

我认为您的select的ID值为image_id

<select id="image_id">

然后您可以使用 :contains() 选择器:

$('#image_id').find('option:contains("Ubuntu")').prop('selected',true);

注意::contains区分大小写,如果您希望匹配ubuntu,则需要覆盖默认的:contains()方法:

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
}); 

<强> Fiddle Demo

答案 1 :(得分:1)

尝试,

$('#image_id').find('option:contains("Ubuntu -12.04")').prop('selected',true);

<强> Working Demo

根据您的新请求,您可以这样做,

$('#image_id').find('option:contains("Ubuntu"):contains("-12.04")').prop('selected',true);

Working Demo

答案 2 :(得分:0)

我喜欢使用.filter来更好地控制查找过程:

// Use the function overload for val
$("#image_id").val(function() {
    // Find the value of the option inside which matches the criteria
    return $(this).find("option").filter(function() {
        var text = $(this).text().toLowerCase();
        // Do a case-insensitive search for both "ubuntu" and "12.04"
        return text.indexOf("ubuntu") > -1 && text.indexOf("12.04") > -1;
    }).val();
});

jsFiddle