1

我有一个下拉列表,其中包含使用 dwr 调用加载的值列表。我从 db 获取数据说我有一个名为印度的位置。我用

$('select[name="cname"]').find(
'option:contains("'
+ data.loc + '")')
.attr("selected", true);

使其被选中。cname 是下拉列表名称。data.loc 是我从数据库中获取的数据。这里的问题是,如果我有两个位置,如印度和印第安纳州,它会迭代并设置两个值,并设置最近的值(印第安纳州)。要设置的实际值是印度。只有当我选择印第安纳时,它才必须被选中,而不是印度。有没有办法解决这个问题?

4

5 回答 5

1

您可以使用filter()应用自定义过滤器匹配选择器返回的元素。

$('select[name="cname"] option').filter(function(){
    return $(this).text() == data.loc; 
}).attr("selected", true);
于 2013-04-01T12:37:14.717 回答
0

你为什么不使用val()

$('select[name="cname"]').val(data.loc)
于 2013-04-01T12:37:01.250 回答
0

使用等于选择器。请参考这里

于 2013-04-01T12:38:56.843 回答
0

为什么不检查相等性:

if($(this).val() == data.loc){
    $('select[name="cname"] option[value="' + data.loc + '"]').attr("selected", "selected");
}
于 2013-04-01T12:43:12.397 回答
0

您可以通过以下方式完成Val(),尝试如下所示,它将对您有所帮助..

$('select[name="cname"]').val(data.loc);
alert($("select[name='cname'] option:selected").text());
于 2013-04-01T12:43:54.580 回答