根据节点值在下拉菜单中选择一个选项?

时间:2010-06-24 14:40:40

标签: javascript jquery

有没有办法根据节点值在jQuery(或Javascript)中设置下拉列表的值?

 <select name="ddlProperty">
        <option value="1" selected="selected"></option>
        <option value="2">Animal Kingdom</option>
        <option value="3">Epcot</option>
        <option value="4">Hollywood Studios</option>
        <option value="5">Magic Kingdom</option>
        <option value="6">Downtown Disney</option>
</select>

我需要设置Magic Kingdom的选项,如下所示:

$("#ddlLocation").val("Magic Kingdom")

因此魔法王国将成为所选项目,但不会按预期工作。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

如果您可以使用(不是文字!),请使用.val()执行此操作:

$("#ddlProperty").val("5");

如果您没有,请使用.filter().text().attr()查找并设置所选<option>,如下所示:

$("#ddlProperty option").filter(function() {
  return $(this).text() === "Magic Kingdom"
}).attr('selected', true);

答案 1 :(得分:1)

类似的东西:

var box = document.getElementById('box'),
    options = box.options;

for(var i = 0; i < options.length; ++i){
    if(options[i].text == val){
        options[i].selected = true;
    }

}

答案 2 :(得分:1)

$("#ddlProperty > option").each(function(i, elem) {
    if($(elem).text() == "Magic Kingdom") {
        $('#ddlProperty').val(elem.value);
        return false;
    }
});

下次请提供一个正确的示例,其中元素具有ID,并且该ID与代码中的ID匹配。我花了大约5分钟检查错误,直到我注意到ID不同......

http://jsbin.com/ikibi3/2

答案 3 :(得分:1)

myselect="Magic Kingdom";
$("select[name='ddlProperty'] option").each(function() {
    if($(this).text() == myselect) {
        $(this).attr('selected', true);
    } else {
        $(this).attr('selected', false);
    }
});