我需要一种方法通过代码遍历下拉列表中的所有选项,并将每个选项与变量进行比较。如果它们匹配,我想让匹配值成为下拉列表中选择的项目,然后退出循环。 到目前为止,这就是我所提出的......就循环项目而言,这是有效的。
$("#domains > option").each(function() {
if (edit_domain[1] == $(this).val()) {
//assign this as being the selected value in dropdown
//exit loop
}
});
编辑1
我将代码更改为如下所示:
//loop through values in drop down to see if we find a match
$("#domain option").each(function() {
var $this=$(this);
alert($(this).val());
if ($this.val() == edit_domain[1] ) {
console.log("compared");
$("#prefix").val(edit_domain[0]);
$("#domain").val(edit_domain[1]);
}
});
当我刷新页面时,我没有收到任何错误消息,但循环中的逻辑似乎都不起作用。控制台中没有警报,也没有消息。作为测试,我通过F12打开了调试工具。在控制台中,我手动输入以下命令:
$("#domain option").each(function() {
alert($(this).val());
});
它从我的下拉框中正确返回所有值。 我不确定代码在哪里出错了!有趣的是,当我在IE中测试时,我确实看到以下关于HTML代码行的错误消息,其中我声明/创建了下拉框:
HTML1402:字符引用缺少结尾分号";"。
HTML代码如下所示:
<tr><td width="30%">Cell Carrier: (e.g.AT&T)</td><td><select class="form-control" name=domain id=domain></select></td></tr>
这可能是个问题吗?如果我的HTML很糟糕,我不会认为我的ajax代码会查询数据库,然后填充下拉列表就可以了。但它确实......它只是在填充失败后查询下拉列表中的值的逻辑。
答案 0 :(得分:3)
使用jQuery时,您可以使用.val()
函数:
$("#domains").val(edit_domain[1]);
答案 1 :(得分:0)
您也可以这样做:
$("#domains option").filter(function() {
return ($(this).val() == edit_domain[1]);
}).prop('selected', true);
答案 2 :(得分:0)
您可以使用以下函数将选项值与变量进行比较。
$(document).ready(function(){
$('select option').each(function(){
var $this = $(this);
if($this.val() == variableValue){
alert('compared');
exit;
}
});
});