Почему jQuery .change () не срабатывает на переключателях, не выбранных в результате выбора тезки? - PullRequest
6 голосов
/ 18 июля 2011

Если у меня несколько переключателей с одним и тем же именем, можно выбрать только одну. Когда один становится выбранным, любые тезки теряют свой выбор. Я заинтригован тем, почему это не составляет событие .change() для jQuery.

Взлом функции $.change() был бы довольно радикальным, но, похоже, это не является ошибкой - поэтому мне интересно выяснить, почему это не так.

Тест ниже: я ожидаю, что два события изменения будут срабатывать всякий раз, когда выбрано радио, но это не так.

Вот пример: http://jsfiddle.net/XzmmW/

Ответы [ 3 ]

11 голосов
/ 18 июля 2011

Если вы рассматриваете набор переключателей как элемент select, становится понятно, почему не нужно запускать событие изменения для отмененного переключателя.

Когда вы изменяете выбранный параметр вselect элемент, вы получаете одно событие изменения (вы не ожидаете ничего другого), а не одно для ранее выбранной опции и другое для вновь выбранной опции.

Как уже упоминалось, когдаодна радиокнопка выбрана, другие в том же наборе не могут быть, поэтому было бы излишним запускать второе событие изменения.

Также обратите внимание, что это не относится к jQuery - стандартное событие изменения JavaScript работает вточно так же.

2 голосов
/ 18 июля 2011

Существует только 1 событие изменения ... вы изменили «старый выбор» на «новый выбор».

Имейте в виду, что, хотя у вас есть несколько "элементов", все они являются частью одного и того же элемента формы (как определено атрибутом name).

1 голос
/ 18 июля 2011

Нет необходимости запускать событие для каждой радиокнопки в именованной группе, когда один выбран, вы знаете, что другие не выбраны

...