2012-01-04 44 views
1

我有一个包含单选按钮的表。我希望用户能够点击表格,这将点击内部的单选按钮。然后,我将检查的单选按钮的值发送到服务器以获取一些更新。在触发事件处理程序之前执行点击操作

当直接单击单选按钮时,它的工作原理很简单,并且标记的单选按钮的值是正确的。

但是,如果我只是在单选按钮上使用.click();,事件处理程序似乎在发生实际的单击事件之前触发,并且在使用$("input:radio:checked").val()时我会得到以前的值。

我已经通过在单选按钮的单击处理程序中设置了100毫秒的超时时间来“解决”此问题,但它似乎是错误的。

有没有什么办法来执行实际的点击之前处理它?

谢谢。

回答

3

你是如何绑定click事件的?

另外,你可能想要的是.change()事件。这只能在价值改变后才能被解雇。

$("input:radio").change(function() { 
    alert($(this).is(':checked')); 
}); 
+0

'alert(this.checked)'就足够了,不需要jquery-fy来获取这个值。 – 2012-01-04 09:30:04

+0

谢谢,工作过很有魅力。 – 2012-01-04 09:35:16

+0

我刚刚注意到:可能是换成另一个单选按钮会触发2个更改事件:取消选中一个,然后检查另一个。只需在代码周围放置一个“if($(this).is(':checked'))”块,它将始终只执行一次。 – Flater 2012-01-04 09:39:50

1

使用.change()事件而不是click()。即:

$("input:radio:checked").change(function() { 
    if ($(this).is(':checked')) { 
     console.log('Checked ' + $(this).val().toString()); 
    } 
}); 
+0

这只会将事件绑定到当前选中的单选按钮。 – Flater 2012-01-04 09:26:39

+0

另外,'if(this.checked)...'是足够的,不需要查询这个检查。 – 2012-01-04 09:34:21

相关问题