单击标签时,我没有使for
更改单选按钮的状态,而是使用jQuery。我还有一个附加到单选按钮的事件,我在其中计算检查的单选按钮的数量。
$('label').click(function(){
$(this).prev('input:radio').trigger('click');
});
$('input[type=radio]').click(function(){
console.log($('input[type=radio]:checked').length);
});
单击第一个广播时,length
的控制台日志为0
,点击第二个广播时为1
,依此类推......
我缺少什么?!
由于
答案 0 :(得分:1)
单击处理程序返回后,单选按钮的选中状态仅在后更改。
这是必要的,因为处理程序可能会返回false
或调用preventDefault()
以禁止控件的默认行为。如果在处理程序返回之前修改了检查状态,则无法禁止默认行为(因为它已经发生)。
在处理程序返回后,您可以使用window.setTimeout() 0
延迟来安排对console.log()
的调用:
$("input[type=radio]").click(function() {
window.setTimeout(function() {
console.log($("input[type=radio]:checked").length);
}, 0);
});
答案 1 :(得分:1)
改为使用change
事件。
$('label').click(function(){
$(this).prev('input:radio').trigger('click');
});
$('input[type=radio]').change(function(){
console.log($('input[type=radio]:checked').length);
});
虽然我可以这样做时不会使用jQuery作为标签:
<label><input type="radio" name="group">click me</label>
答案 2 :(得分:0)
click
只是一个UI动作。您应在广播输入上处理的事件是change
。