在jquery/javascript中单击div时更改单选按钮值

在jquery/javascript中单击div时更改单选按钮值,javascript,jquery,html,iteration,Javascript,Jquery,Html,Iteration,我目前正在尝试创建一个多项选择活动,在该活动中,用户使用旁边的单选按钮从多个答案中选择一个。我已经能够通过显式地写出如下代码来更改单选按钮: $("#choice0").on('click', function(){ $("input[name=radioAwnser][value=0]").attr("checked","checked"); console.log("clicked a"); }); $("#choice1").on('click', function(){

我目前正在尝试创建一个多项选择活动,在该活动中,用户使用旁边的单选按钮从多个答案中选择一个。我已经能够通过显式地写出如下代码来更改单选按钮:

$("#choice0").on('click', function(){
    $("input[name=radioAwnser][value=0]").attr("checked","checked");
    console.log("clicked a");
});

$("#choice1").on('click', function(){
    $("input[name=radioAwnser][value=1]").attr("checked","checked");
    console.log("clicked b");
});

$("#choice2").on('click', function(){
    $("input[name=radioAwnser][value=2]").attr("checked","checked");
    console.log("clicked c");
});
不过,我不一定知道会有多少答案。当我试图写一些更灵活的东西时:

function setUpAwnsers(){
    for(var i = 0; i<=3 ; i++){
        console.log("#choice" + i);
        $("#choice" + i).on('click', function(){
            $("input[name=radioAwnser][value=" + i +"]").attr("checked","checked");
            console.log("clicked");
        });
    }
}
函数设置{

对于(var i=0;i不在循环中绑定事件,只需使用添加事件处理程序即可

$(document).on("click", "[id^=choice]", function () { 
    var no = this.id.replace("choice","");
    $("input[name=radioAwnser][value=" + no + "]").prop("checked", true);
});

如果您想使用循环,请遵循以下步骤,但这不是好的标准方法

function setUpAwnsers(){
    for(var i = 0; i<=3 ; i++){
        console.log("#choice" + i);
     $(document).on("click","#choice" + i, function(){
             var no = this.id.replace("choice","");
            $("input[name=radioAwnser][value=" + no  +"]").prop("checked",true);
            console.log("clicked");
        });
    }
}
函数设置{

for(var i=0;i一个可能的问题是,由于您订阅for循环中的click事件,并尝试在事件处理程序中使用值
i
,因此
i
的值将始终是最后一个值(因为它不在本地范围内)。请尝试以下操作:

function setUpAwnsers(){
    for(var i = 0; i<=3 ; i++){
        console.log("#choice" + i);
        $("#choice" + i).on('click', function(i){
            $("input[name=radioAwnser][value=" + i +"]").attr("checked","checked");
            console.log("clicked");
        }.bind(null, i));
    }
}
函数设置{

对于(var i=0;i你不应该为此使用JavaScript:你所需要的不是爱,而是
而不是


这里是你部门的内容
这里是你部门的内容
标签的使用将给您带来更多的好处:当用户单击标签时,收音机也会发出单击事件。div解决方案不会给您这样的好处


要了解更多信息,请参见

我们可以查看您的html吗?您检查了演示链接了吗?非常感谢!使用.attr和.prop进行显式切换,效果会更好
<input type="radio" id="choice1" />
<label for="choice1">The content from your div here</label>
<input type="radio" id="choice2" />
<label for="choice2">The content from your div here</label>