2013-04-25 48 views
0

一个选择选项我有以下(=>)Fiddle。它所做的是寻找被价值选择选项,然后设置选项中发现的属性为选中状态。很简单。这个脚本(下面复制)在IE 9和Firefox 17工作正常,但无法在Chrome或Safari。这2个浏览器无法将该属性设置为选中状态。jquery的:选择由值

我在这里错过了什么吗?

编辑:它看起来像我需要使用.prop(),而不是.attr()。

的选择HTML:

<select id="listmcu"> 
    <option value="1002">PA</option> 
    <option value="1003">CA</option> 
    <option value="1004">OR</option> 
    <option value="1005">FL</option> 
    <option value="1006">TX</option> 
</select> 

jQuery的;

$(function() { 
    var mcu = "1005"; 
    alert ('Begin: mcu val = ' + mcu); 
    //$("#listmcu").find("option:contains('" + mcu + "')").each(function() { 
    $("#listmcu").find("option[value='" + mcu + "']").each(function() { 
     alert ('In contains: this val = ' + $(this).val()); 
     if ($(this).val() == mcu) { 
      //$(this).attr("selected", "selected"); 
      $(this).prop("selected", "selected"); // <== appears to work 
     } 
    }); 
}); 
+0

'selected'是一个属性,不是属性。你应该使用'prop()'而不是'attr()' – jbabey 2013-04-25 20:01:13

回答

4

你需要用它来解决问题:

$(this).prop("selected", true); 

FIDDLE

+1

另一个“DOH”时刻对我来说。感谢您的帮助,我知道它必须是一个简单的问题。我必须在.attr()上多次使用RTFM,但错过了有关属性的.prop()部分。再次感谢你们两位! – radi8 2013-04-25 20:09:57

+0

很高兴它帮助! – 2013-04-25 20:11:54

0

你正在做的太辛苦自己。只是在选择框中使用.val,让jQuery的做繁重:

$(function() { 
    var mcu = "1005"; 
    alert ('Begin: mcu val = ' + mcu); 
    $("#listmcu").val(mcu); 
}); 

Fiddle