这里有一个我的问题的例子:
如何获取我单击的当前单选按钮而不是最后一个?
$(function(){
$(".options > label").live("click", function(event)
{
radio_value = $(this).prev("input[type='radio']").val();
$("#clicked").html(radio_value);
});
});
工作样本:http: //jsfiddle.net/LWcu8/11/
$(".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 事件绑定到label
它radio
的前一个元素。
试试这个:
$(".options > label").live("click", function(event)
{
radio_value = $("#" + $(this).attr('for')).val();
$("#clicked").html(radio_value);
});
演示:http: //jsfiddle.net/LWcu8/6/
尝试延迟回调:
$(".options > label").live("click", function(event) {
setTimeout(function() {
radio_value = $("input[name='size']:checked").val();
$("#clicked").html(radio_value);
}, 0)();
});
$(".options > input[name='size']").live("click", function(event)
{
radio_value = $(this).val();
$("#clicked").html(radio_value);
});
您的代码绑定了标签的单击事件,该事件发生在您获取收音机的值之前。你应该只绑定 input[name='size'] 然后它就会工作。
将您的代码更改为:
$("input[name='size']").live("change", function(event)
{
radio_value = $("input[name='size']:checked").val();
$("#clicked").html(radio_value);
});
在对单选按钮进行更改之前,会在标签上触发该click
事件。因此,您应该改为响应更改。