2013-04-25 51 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