逻辑通过jquery失败循环下拉列表中的所有项目

时间:2015-04-20 21:03:47

标签: javascript jquery ajax

我需要一种方法通过代码遍历下拉列表中的所有选项,并将每个选项与变量进行比较。如果它们匹配,我想让匹配值成为下拉列表中选择的项目,然后退出循环。 到目前为止,这就是我所提出的......就循环项目而言,这是有效的。

$("#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代码会查询数据库,然后填充下拉列表就可以了。但它确实......它只是在填充失败后查询下拉列表中的值的逻辑。

3 个答案:

答案 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;
        }
    });
});