2013-07-02 38 views
0

從Ajax請求,我得到這個響應查找在JSON對象列出使用jQuery

val1,val2,val3 

,並有相當的ID,以他們喜歡

<select multiple> 
    <option id="val1">val1</option> 
    <option id="val4">val4</option>  
    <option id="val5">val5</option> 
    <option id="val2">val2</option> 
    <option id="val6">val6</option> 
    <option id="val1">val3</option> 
</select> 

我怎麼可以給一個列表中的所有ID的ajax響應attr選擇的所有選項ID? 是這樣的:

<select multiple> 
    <option id="val1" selected="selected">val1</option> 
    <option id="val4">val4</option>  
    <option id="val5">val5</option> 
    <option id="val2" selected="selected">val2</option> 
    <option id="val6">val6</option> 
    <option id="val1" selected="selected">val3</option> 
</select> 

我希望這個很清楚! 非常感謝提前

+1

你不能這樣做!下拉菜單中只能有一個「選定」選項。並且我用'id'作爲'val1'獲得了很多元素。那也不對。你可以只有一個獨特的元素和一個唯一的ID。 – krishgopinath

+1

你不應該在'option'標籤中使用'id'屬性。 @hungerpain,多選列表如何? – YD1m

+0

我沒有看到'multiple = multiple'屬性@ YD1m ..那就是爲什麼我說它不可能 – krishgopinath

回答

1

你需要做兩件事情:

  • 改變所有的id屬性在optionvalue它不適合在選項中使用idAnd besides, you seem to be using the same id for multiple elements, which is semantically wrong。如果不使用val,則選項內的文本將作爲選項的值。

    <select> 
        <option value="val1">val1</option> 
        <option value="val4">val4</option>  
        <option value="val5">val5</option> 
        <!-- rest of your options --> 
    </select> 
    
  • 然後,你將不得不使用multiple選擇,如果你需要選擇一個或多個選擇的選項。select必須是這樣的:

    <select multiple="multiple"> 
        <option value="val1">val1</option> 
        <option value="val4">val4</option>  
        <option value="val5">val5</option> 
        <!-- rest of your options --> 
    </select> 
    

現在,對於你的問題,你可以只split您從ajax呼叫進入一個數組,然後將數據把它傳遞給jQuery的val。這將節省JS引擎大量時間來搜索ID並更改選項的屬性。

//store your ajax response in a variable 
var values = 'val1,val2,val3'.split(','); 
//assign multiple values to <select> 
$("select").val(values); 

演示:http://jsfiddle.net/hungerpain/J7exP/4/

欲瞭解更多信息有關valsee docs

4

嘗試使用filter(),您還需要設置選擇的多個屬性以允許multiple選擇。

Live Demo

var arr = 'val1,val2,val3'.split(','); 
$('select option').filter(function(){ 
    return arr.indexOf(this.id) != -1; 
}).prop('selected', true); 

選擇的多張屬性。

該布爾型屬性表示可以在列表中選擇多個選項 。如果未指定,則一次只能選擇一個選項 ,即Reference

jQuery的過濾器()

如果提供的jQuery代表了一組DOM元件,所述 .filter()方法從 匹配元素的子集構造新jQuery對象。提供的選擇器針對每個 元素進行測試;匹配選擇器的所有元素將包含在 結果中。