2011-02-03 187 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();

相关问题