2011-04-06 55 views
1

我有3个选择与几个选项。当一个选项被更改时,我想检查所有其他选择,不管它们是否也被选中(selected =“selected”)。所有的选择都是相同的形式。jQuery的每个函数迭代选择的问题

到目前为止,我有以下的JavaScript来做到这一点

$("#form").change(function(event){ 
$(this).find("select").each(function(){ 
    alert($(this+"option:selected").length); 
}); 
}); 

基本上采取这种做法:Check if option is selected with jQuery, if not select a default

警报doenst似乎给了我1或基于个人$ 0()选择元素,但奇怪地计数到2(在选择最后一个选择后警告3次2次,第一次选择后警告3次0,在第二次3次1后和最后3次2次后)。我希望它提醒例如0 0 0,然后1 0 0,然后1 0 1,最后是1 1 1.

任何想法如何实现以及如何完成想要的?谢谢。

回答

3

您的内部选择器不正确。它应该是:

$(this).find("option:selected").length 

你不能在前面加上一个DOM元素的选择(因为他们不是字符串)。您最终会看到类似于“Object objectoption:selected”的选择器,因为它将隐含地调用.toString()方法,因为它与双目的+运算符一起使用。

jQuery选择器需要格式良好CSS3选择器。

+0

你打我!为你+1 – JAAulde 2011-04-06 01:20:17

1

this+"option:selected"不是有效的选择器。试试:

$(this).find("option:selected").length