1

这里有一个我的问题的例子:

http://jsfiddle.net/LWcu8/1/

如何获取我单击的当前单选按钮而不是最后一个?

4

6 回答 6

2
$(function(){
  $(".options > label").live("click", function(event)
  {
    radio_value = $(this).prev("input[type='radio']").val();
    $("#clicked").html(radio_value);
  });
});

工作样本:http: //jsfiddle.net/LWcu8/11/

于 2012-06-07T01:13:15.117 回答
0
$(".options > label").live("click", function(event)
{
    radio_value = $(this).prev(":radio").val();
    $("#clicked").html(radio_value);
});

演示

如果你想使用 jQuery > 1.7 那么你可以这样做:

$(".options").on("click", "label", function(event)
{
    radio_value = $(this).prev(":radio").val();
    $("#clicked").html(radio_value);
});

演示

笔记

您需要.prev(),因为您将 click 事件绑定到labelradio的前一个元素。

于 2012-06-07T01:13:56.170 回答
0

试试这个:

$(".options > label").live("click", function(event)
{
    radio_value = $("#" + $(this).attr('for')).val();
    $("#clicked").html(radio_value);
});​

演示:http: //jsfiddle.net/LWcu8/6/

于 2012-06-07T01:15:08.973 回答
0

尝试延迟回调:

$(".options > label").live("click", function(event) {
    setTimeout(function() {
        radio_value = $("input[name='size']:checked").val();
        $("#clicked").html(radio_value);
    }, 0)();
});​

演示

于 2012-06-07T01:19:25.403 回答
0
$(".options > input[name='size']").live("click", function(event)
{
    radio_value = $(this).val();
    $("#clicked").html(radio_value);
});​

您的代码绑定了标签的单击事件,该事件发生在您获取收音机的值之前。你应该只绑定 input[name='size'] 然后它就会工作。

于 2012-06-07T03:04:46.023 回答
-1

将您的代码更改为:

$("input[name='size']").live("change", function(event)
{
    radio_value = $("input[name='size']:checked").val();
    $("#clicked").html(radio_value);
});​

在对单选按钮进行更改之前,会在标签上触发该click事件。因此,您应该改为响应更改。

于 2012-06-07T01:14:23.257 回答