将selected =“selected”分配给动态选项列表

时间:2012-11-22 04:04:56

标签: jquery select dynamic option

在“编辑文章”页面中,我有一个选择列表,显示作者的姓名,以及authorId作为值。以及文章上下文和标题等(使用不同的方法获取) - 尽管此方法还包含特定文章的authorId。

我需要在选项列表中选择文章的作者,而不是默认为选择列表中的第一个选项。

我有什么:

  
    

回波 '';                     //在选项列表$ authors_name

中循环播放作者姓名
            foreach($authors_name as $nameRow){

                echo'<option class="authorId" value = "' . $nameRow['AuthorID'] . '">'. $nameRow['FirstName'].'
         

'。$ nameRow ['LastName']。'';                     }

  
          echo'</select>';

和jquery:

  

var currID =('#selectAuthor')。val();

    if(('.authorId').val() == currID){
          $('.authorId').addClass('new_class')
          $('.new_class').prop('selected',true);  
    }

OR

  

var currID =('#selectAuthor')。val();

    if($("select option[value=currID]").attr('selected','selected'));

任何帮助都将不胜感激,我希望我所要做的是明确的。 提前致谢

我已经用常规输入对其进行了简化,并在jsfiddle.net中进行了检查 这是HTML

  

';

<option value = "2">Name val 2</option>
<option value = "5">Name val 5</option>
<option value = "1">Name val 1</option>
     

这里是jquery

  

var currID = $('#selectAuthor')。val();            if($(“select option [value ='+ currID +']”)。prop('selected',true));

即便如此,它也不会将selected =“selected”应用于value =“1”的选项

1 个答案:

答案 0 :(得分:0)

我不确定您为什么不在服务器代码中添加selected。至于你的jQuery,你有几个问题。

首先,您有语法问题,应该在浏览器控制台中抛出错误。只需查看控制台就可以为您节省这一步

var currID = ('#selectAuthor').val();

应该是:

var currID = $('#selectAuthor').val();

当您将currID传递给字符串时,下一个语法问题出现在第二个版本中,您将其添加为字符串文本,而不是作为连接到字符串中的变量。

if( $("select option[value='+currID+']").attr('selected','selected'));

然而,这仍然是一个问题,因为您设置了attr而不是getting it. Use prop`方法而不是它将重新调整布尔值

 if( $("select option[value='+currID+']").prop('selected'));

第一个版本的问题是:

  if(('.authorId').val() == currID)

再次语法(使用浏览器控制台!!!)...缺少$。即使使用正确的语法,也无法检查元素集合中if中的所有值。它只会返回第一个的值。这就像为20个不同的人要求一个电话号码。您必须使用each()方法遍历所有集合,并使用if检查每个集合或使用filter()

 $('.authorId').filter(function(){
       return this.value == currID;
 }).prop('selected',true)