【问题标题】:jquery: select a Select option by valuejquery:按值选择一个选择选项
【发布时间】:2013-04-25 20:00:02
【问题描述】:

我有以下 (=>) 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
        }
    });
});

【问题讨论】:

  • selected 是一个属性,而不是一个属性。您应该使用 prop() 而不是 attr()

标签: jquery


【解决方案1】:

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

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

FIDDLE

【讨论】:

  • 我的另一个“DOH”时刻。感谢您的帮助,我知道这必须是一个简单的问题。我必须在 .attr() 上多次使用 RTFM,但 错过了关于 .prop() 属性的部分。再次感谢你们!
【解决方案2】:

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

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

Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多