2012-08-10 117 views
0

我有,当一个用户点击一个项目发生以下选择下拉选项:的Javascript默认选择

 $(this).html($("<select/>", { 
      class: 'sel', 
     }).append($("<option/>", { text: "WIP" })) 
      .append($("<option/>", { text: "C" })) 
      .append($("<option/>", { text: "A" })) 
      .append($("<option/>", { text: "AR" })) 
      .append($("<option/>", { text: "NS" })) 
     ); 

此外,我有一个名为status变量被定义,作为任一“WIP”, “C”,“A”,“AR”或“NS”。

status = trim(($(this).text())); 

我想让它这样,当我点击select下拉列表中,option == status将被选中。例如:

status = "WIP" 
<select class="sel"> 
    <option selected="selected">WIP</option> 
    <option>C</option> 
    ... 
</select>   
+0

你能提供一些更多的信息吗?何时分配了“状态”变量?它可以改变,由于用户交互,如果是这样,下拉也应该改变? – jackwanders 2012-08-10 17:58:36

+0

如果你做了一个jsfiddle,它会有所帮助 – 2012-08-10 17:59:06

+2

如果在用户点击一个项目时设置了状态,为什么需要下拉菜单? – 2012-08-10 17:59:22

回答

2

我明白这个问题的样子,你要设置默认option使用户点击之前就会有选择的选项。

这里是你会怎么做:

var status = "WIP"; 

$("<select/>", { 
    class: 'sel', 
}) 
.append($("<option/>", { text: "WIP" })) 
.append($("<option/>", { text: "C" })) 
.append($("<option/>", { text: "A" })) 
.append($("<option/>", { text: "AR" })) 
.append($("<option/>", { text: "NS" })) 
.val(status) 
.appendTo(this); 

注意整个select元素应该append之前荷兰国际集团到DOM建成。这是更好的性能,因为任何与DOM的交互是非常昂贵的。

2

你也可以减少你的代码的重复,如果你把你的选项的文本值的数组:

var options = ['WIP','C','A','AR','NS']; 
var menu = $('<select>',{class:'sel'}); 

$.each(options,function(i,text){ 
    menu.append($('<option>',{text:text})); 
}); 

menu.val(status).appendTo(this); 
+0

为该循环选择适当的选项。 – 2012-08-10 18:04:34

0

这里是你可以做什么,让存储的值被选为用户点击在选择。

小提琴。

http://jsfiddle.net/TRCWh/

代码

<div id = "hello"></div> 

var select = "A"; 
$('#hello').html($("<select/>", { 
      class: 'sel', 
     }).append($("<option/>", { text: "WIP" })) 
      .append($("<option/>", { text: "C" })) 
      .append($("<option/>", { text: "A" })) 
      .append($("<option/>", { text: "AR" })) 
      .append($("<option/>", { text: "NS" })) 
       ); 

$(document).on("click",".sel",function(){ 
    $(this).val(select); 
}) 

注:我忽略了公认的编码习惯(如有些人可能会说)了一段时间。只是为了给你的问题快速修复答案:)