使用jQuery </select> </option>以编程方式在<select>中选择<option>

时间:2011-10-05 09:37:11

标签: jquery select option

我遇到需要以编程方式选择select中的选项的情况。我似乎无法找到答案,我的大脑正在变成糊状......这就是我一直在尝试的(以及其他各种变化)。

$("#location_list option[value='"+LID+"']").attr("selected", "selected");

任何帮助都会非常感激!

谢谢!

这是周围的代码......

function loc_commitData(location_data, update_loc) 
    {   
        if (window.XMLHttpRequest)
            {
                xmlhttp = new XMLHttpRequest();
            }
        else
            {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }

        xmlhttp.onreadystatechange = function()
        {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {

                populate_loc_list('<?php echo $CompanyID; ?>', $("input:radio[name='locationstatus']:checked").val());
                bind_events_to_location_list();

                $("#location_list").val(xmlhttp.responseText);
            }
        }

        xmlhttp.open("GET", "includes/save_location_data.php?" + location_data, true);
        xmlhttp.send();     
    };

以下是在片段代码中插入location_list的HTML代码段...

<fieldset style="margin-right: 15px;">
<legend>Locations</legend>
<span id="location_list_span"> THIS IS WHERE location_list GETS INSERTED ON THE FLY AFTER THE PAGE IS CREATED BY PHP</span>
</fieldset>

5 个答案:

答案 0 :(得分:10)

请改为尝试:

$("#location_list").val(LID);

设置下拉值should do the trick

答案 1 :(得分:2)

使用jquery 1.9.1和jquery mobile 1.3.0时,您必须添加一个刷新语句:

$("#location_list").val(LID);
$("#location_list").selectmenu("refresh");

Test it on jsfiddle

答案 2 :(得分:0)

$("#location_list").selectedIndex = index of the obj;

编辑:

实际上,我在我的一个旧脚本中有这个,是的,它确实可以提供正确的索引。然而,既然我们正在谈论规范的方式,我已经跨越了类似的东西:

select.children("option").each(function () {
  if ($(this).text().match(matcher)) {
    this.selected = valid = true;
  }
});

为什么我应该使用父选择而不是使用选项集合?

答案 3 :(得分:0)

在阅读您对Shadow Wizard的评论后(建议使用正确的解决方案),您可能会遇到两个问题之一:

  1. 计时问题 - 你有这样的代码:

    var LID = $("#location_list").val();   
    $.ajax(/*go get items for new  select and populate it on success*/);   
    $("#location_list").val(LID); //this will happen before the ajax return and populate the list
    
  2. 您没有在新列表中返回值,或者您尝试通过文本设置它的值

  3. 哦,忘了将解决方案添加到1 - 只需在重新填充列表后选择Ajax调用成功回调中的旧值

答案 4 :(得分:0)

我使用了这段代码,它对我有用 $("#selectID option")[index].selected = true;