2013-04-25 3 views
0

У меня есть следующее (=>) Fiddle. Он выполняет поиск опции Select по значению и затем устанавливает атрибут найденного параметра как выбранный. Довольно просто. Этот скрипт (реплицированный ниже) отлично работает в IE 9 и FireFox 17, но не в Chrome OR Safari. Эти 2 браузера не могут установить атрибут как выбранный.jquery: выберите опцию выбора по значению

Я что-то упустил?

EDIT: похоже, мне нужно было использовать .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

ответ

4

Вы должны использовать это, чтобы решить проблему:

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

FIDDLE

+1

Еще один момент «DOH» для меня. Спасибо за помощь, я знал, что это должна быть простая проблема. У меня должен быть RTFM несколько раз на .attr(), но пропустил часть свойств .prop() для свойств. Еще раз спасибо вам обоим! – radi8

+0

Рад, что это помогло! –

0

Вы делаете это слишком сильно на себя. Просто используйте .val на поле выбора и пусть JQuery делать тяжелую работу:

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

Fiddle

Смежные вопросы