JQuery为选中设置了多个下拉选项

zer*_*rmy 5 javascript jquery

我遇到了一个有趣的小问题,可能只是我很傻.

我有一个看起来有点像这样的选择框:

<select id="dom_" name="dom_">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    ...
Run Code Online (Sandbox Code Playgroud)

选项代表一个月中的几天,最多可达31天.

现在,当加载一个带有信息的表单(用于编辑)时,我试图选择一个默认值,但我无法让它工作得很好.

我尝试使用我在以前的一些SO问题中找到的这个片段:

$("#dom_ option[value$='" + 2 + "']").attr('selected', true);
Run Code Online (Sandbox Code Playgroud)

此行运行并将第二个选项设置为选中,但它也会将其他2X或X2选项设置为已选中.例如,12和22也将被设置为选中.

但是,如果我使用这个:

$("#dom_ option").each(function()
{
    if ($(this).val() == 2)
    {
        $(this).attr('selected', true);
    }
    else
    {
        $(this).attr('selected', false);
    }

});
Run Code Online (Sandbox Code Playgroud)

然后将选择正确的选项,但SELECT不会更新该框.

我必须手动调用$("#dom_").val(2);后记来更新该框.

所以,我的问题是,为什么第一个选项不起作用,为什么第二个选项不能自动刷新?

另外,SELECT通过对象$("#dom_")和调用.val它与选择和设置selected为true 之间的区别究竟是什么?这两个都发回相同的数据POST还是GET数据?

这是一个有希望证明这一点的jsFiddle.

如果它有帮助,我使用JQuery 1.6.4但我可以在jsFiddle中的一些较新版本上重现相同的问题.

如果这个问题太简单,我道歉.在JavaScript和JQuery方面,我仍然是一个业余爱好者.

Nix*_*Nix 6

您正在使用带有($=)的结尾,而只是使用value=仅与您想要的值完全匹配的结尾.

$("#dom_ option[value='" + 2 + "']").attr('selected', true);
Run Code Online (Sandbox Code Playgroud)