2012-08-10 74 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); 
}) 

注:我忽略了公認的編碼習慣(如有些人可能會說)了一段時間。只是爲了給你的問題快速修復答案:)