2012-02-07 3 views
0

Со следующей HTML:JQuery радио Изменения не обнаружена связанной функцией

<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 обнаруживает только ручные изменения?

+0

Вы правы - jQuery обнаруживает только ручные изменения. Вы можете отделить свою функцию, которая запускается при изменении переключателя, и вызвать функцию change_radio_button. –

+0

Спасибо! Полагаю, мне нужно это сделать! – Nat

ответ

2

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

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

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

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

Я не знаком с этими форматами. Я буду играть с ними. Благодарю. – Nat

+1

Только что нашел это, и '.trigger ('change');' было именно то, что мне нужно для моей собственной проблемы. – asfallows

Смежные вопросы