0

我有以下 (=>) Fiddle。它的作用是按值搜索 Select Option,然后将找到的选项的属性设置为选中。很简单。该脚本(复制如下)在 IE 9 和 FireFox 17 中运行良好,但在 Chrome 或 Safari 中无法正常运行。这 2 个浏览器未能将属性设置为选中。

我在这里错过了什么吗?

编辑:看起来我需要使用 .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
        }
    });
});
4

2 回答 2

4

您需要使用它来解决您的问题:

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

小提琴

于 2013-04-25T20:05:18.553 回答
0

你对自己太苛刻了。只需在选择框上使用.val并让 jQuery 完成繁重的工作:

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

小提琴

于 2013-04-25T20:08:35.487 回答