2012-01-12 224 views
0

該問題已被多次詢問,但這不是重複。我正在使用for循環搜索包括select,input等元素的div。它將類名稱與對象參數匹配,如果匹配,則設置元素的值。用jQuery設置選擇下拉菜單

for(var i in obj) { 
    if(obj.hasOwnProperty(i)) { 
     $(editClone).find('.' +i).val(obj[i]); 
    } 
} 

它適用於輸入要素精細,但與選擇的元素它會刪除所有的選項,只是將實際元素標籤上的值。

這是select語句之前,我跑我的javascript:

<select class="type"> 
    <option value="Home">Home</option> 
    <option value="Work">Work</option> 
    <option value="Mobile">Mobile</option> 
    <option value="Other">Other</option> 
</select> 

後,我運行的代碼(在Firebug驗證檢查):

<select class="type">Mobile</select> 

它爲什麼要這樣做呢?我認爲val()應該設置一個匹配的選項標籤來選擇。對象值和選項標籤是匹配的,但它沒有做到它應該做的。我在這裏做錯了什麼?

原來我有DIV,我試圖克隆嵌套在HTML中的錯誤位置以及javascript中的錯誤克隆調用。完全不相關的錯誤。下面的答案是正確的,它只是沒有在我的情況下工作,因爲我不明白我遇到的問題。

回答

0
<select class="type">Mobile</select> 

無效。一個選擇需要有內部option標籤它


這是你的代碼的工作版本:

DEMO

<select class="type"> 
    <option value="0">0</option> 
    <option value="A">A</option> 
</select> 

腳本:

$(function() { 

    var obj = { type: "A" }; 

    var editClone = $(document); 

    for(var i in obj) { 
     if(obj.hasOwnProperty(i)) { 
      $(editClone).find('.' + i).val(obj[i]); 
     } 
    } 
}); 
+0

我希望我能說工作,但那正是我已經有的。我只是沒有在我的示例代碼中包含對象和editClone,因爲它是無關緊要的。出於某種原因,val()將替換select語句內的html(),而不是選擇選項並選擇匹配的語句。 – ryandlf 2012-01-12 04:16:41

+0

Select類最初有選項,而Mobile就是其中一種選擇。 JavaScript將使用Mobile替換所有選項。 – ryandlf 2012-01-12 04:17:28

+0

@ryandlf - 它不會取代任何html。這只是設置A選項,就像你想要的那樣。檢查鉻開發工具或螢火蟲中的HTML看看自己:) – 2012-01-12 04:27:07