jQuery触发器递增无线电:在-1偏移处检查长度

时间:2011-12-07 14:11:45

标签: jquery

单击标签时,我没有使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,依此类推......

我缺少什么?!

由于

3 个答案:

答案 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