2011-02-03 184 views
0

我想取消選擇與jQuery的選項元素。這是我的情景:jQuery選擇選項取消選擇

我有3個選擇選項:
[選擇1]
[選擇2]
[選擇3]

場景:選擇1預裝有數據從阿賈克斯呼叫。因此,選擇1具有選擇1,選擇2,選擇3等。
當您從選擇1中選擇一個選項時,它將填充選擇2與數據,並且當您從選擇2中選擇填充選擇3時,依此類推。

根據您選擇的內容,它會將這些「:selected」選項中的值應用於名爲「url」的變量。

所以,你只能選擇「選擇1」的情況:
URL =「搜索/爲/本/選擇1 /」

在次情況下,你選擇「選擇1」和「選擇2」
url ='search/for/this/select1/select2/

等等。

這是我寫的jQuery代碼方式:

var url = 'search/for/this'; 
if(element1.is(':selected')) { 
    url += element1.val();  
    // makes url = 'search/for/this/select1val/'; 
    if(element2.is(':selected')) { 
     url += element1.val();  
     // makes url = 'search/for/this/select1val/select2val/'; 
     if(element3.is(':selected')) { 
      url += element1.val();  
      // makes url = 'search/for/this/selectval1/select2val/select3val/'; 

     } 
    } 
} 

的問題是,這需要選擇一前一後,我去選擇下一個選項,但因爲有數據填充當它通過上面的代碼示例中的「:selected」條件檢查時,似乎自動返回true。有關如何完成此功能的任何想法?如果我不清楚我的問題。請要求更多的細節,我會將它們添加進來。謝謝 -Chris-

+0

這是一個錯字,每次獲得的元素的.val()? – n8wrl 2011-02-03 20:11:57

+0

當這些行的代碼執行嗎?我建議你應該調用onchange事件的方法選擇框,然後做一些其他的邏輯 – 2011-02-03 20:17:20

回答

3

它看起來像增加了很多複雜性,否則應該是一個相當簡單的任務。如你所描述的,你想從你的下拉列表中獲得所有選定值的值,並將它們連接成一個URL。

jQuery $.map()函數非常適合這個例子。試試下面的代碼:

var searchTerms = $('option:selected').map(function() { 
    return $(this).val(); 
}).get().join('/'); 

url = 'search/for/this/' + searchTerms; 

這樣,你會在你需要真正得到所選擇的值(例如您的搜索提交時,比如你可能也想獲得該選項的文字,而不是執行該代碼了。實際值,在這種情況下代碼將改變爲return $(this).text();

相關問題