jQuery选择选项取消选择
问题描述:
我想取消选择与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-
答
它看起来像增加了很多复杂性,否则应该是一个相当简单的任务。如你所描述的,你想从你的下拉列表中获得所有选定值的值,并将它们连接成一个URL。
jQuery $.map()
函数非常适合这个例子。试试下面的代码:
var searchTerms = $('option:selected').map(function() {
return $(this).val();
}).get().join('/');
url = 'search/for/this/' + searchTerms;
这样,你会在你需要真正得到所选择的值(例如您的搜索提交时,比如你可能也想获得该选项的文字,而不是执行该代码了。实际值,在这种情况下代码将改变为return $(this).text();
这是一个错字,每次获得的元素的.val()? – n8wrl 2011-02-03 20:11:57
当这些行的代码执行吗?我建议你应该调用onchange事件的方法选择框,然后做一些其他的逻辑 – 2011-02-03 20:17:20