Изменение переключателя jquery не обнаружено связанной функцией - PullRequest
0 голосов
/ 07 февраля 2012

Со следующим html:

<input type = "radio" name = "who" class = "number" value = "0" > text </input>
<input type = "radio" name = "who"   class = "number" value = "1" > text </input>
<input type = "radio" name = "numberS"  class = "number"  value = "1" > text </input>
<input type = "radio" name = "numberS"  class = "number"  value = "2" > text</input>

и следующие два бита javascript:

$('input[class="number"]').bind('change', function (){
    alert("Change!");
    })

function change_radio_button(n){
   $('input[class="number"]')[n].checked = true;
   }

Как и все, это работает отлично: выбор новой радиокнопки вызывает оповещение, а вызов change_radio_button () меняет, какая радиокнопка выбрана.

Но когда вызывается change_radio_button () и выбор переключателя изменяется, связанная функция не обнаруживает изменения - предупреждение не происходит. Почему бы и нет? Функция jquery обнаруживает только ручные изменения?

1 Ответ

2 голосов
/ 07 февраля 2012

Если у вас есть класс, используйте селектор класса. Использование class в качестве селектора атрибута не рекомендуется.

$('input.number').bind('change', function (){
    alert("Change!");
});

А если вы хотите запустить событие изменения, используйте trigger или просто вызовите метод change(). Это событие не изменится, если вы установите флажок переключателя программным способом.

function change_radio_button(n){
   $('input.number')[n].checked = true;
   $('input.number').trigger('change');
}
...