Проблема с jQuery каждая функция перебирает - PullRequest
1 голос
/ 06 апреля 2011

У меня есть 3 выбора с несколькими вариантами. При изменении параметра я хочу проверить все остальные варианты выбора, независимо от того, выбраны они или нет (selected = "selected"). Все выбранные формы имеют одинаковую форму.

Пока у меня есть следующий javascript для этого

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

В основном следуя этому подходу: Проверьте, выбран ли параметр с помощью jQuery, если нет, выберите значение по умолчанию

Кажется, что предупреждение дает мне 1 или 0 в зависимости от отдельного элемента $ (this) select, но странным образом считается до 2 (оповещения 3 раза 2 после выбора последнего выбора. После первого выбора оно предупреждает 3 раза) 0, после второго 3 раза 1 и 3 раза 2 на последнем). Я хочу, чтобы он предупреждал, например, 0 0 0, затем 1 0 0, затем 1 0 1 и, наконец, 1 1 1.

Есть идеи, как это происходит и как достичь желаемого? ТНХ.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Ваш внутренний селектор неверен.Это должно быть:

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

Вы не можете добавить элемент dom к селектору (так как они не являются строками).В итоге вы получите селектор, который выглядит примерно как «Object objectoption: selected», поскольку он неявно вызывает метод .toString(), так как он используется с оператором двойного назначения +.

Селекторы jQuery должны быть правильно сформированы CSS3 селекторы.

1 голос
/ 06 апреля 2011

this+"option:selected" не является допустимым селектором.Попробуйте:

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