使用以下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函数是否仅检测手动更改?
答案 0 :(得分: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');
}