如何通过循环简化此操作?

时间:2014-12-18 20:32:09

标签: loops syntax radio

我试图用循环来简单地这样做。每个块中唯一改变的是_1,_2,_3(等等)。基本上,我想听一堆(独特的)2选项无线电设备进行更改并做相应的事情。

    $( "input[name='radioset_1'" ).change(function() {
        if ($( "#option_A_1").prop( "checked" )) {
        // do option A thing for radioset_1
        } else {
        // do option B thing for rasioset_1
    });

     $( "input[name='radioset_2'" ).change(function() {
        if ($( "#option_A_2").prop( "checked" )) {
        // do option A thing for radioset_2
        } else {
        // do option B thing for rasioset_2
    });

     $( "input[name='radioset_3'" ).change(function() {
        if ($( "#option_A_3").prop( "checked" )) {
        // do option A thing for radioset_3
        } else {
        // do option B thing for rasioset_3
    });

     $( "input[name='radioset_4'" ).change(function() {
        if ($( "#option_A_4").prop( "checked" )) {
        // do option A thing for radioset_4
        } else {
        // do option B thing for rasioset_4
    });

2 个答案:

答案 0 :(得分:1)

如果要循环

,请尝试此操作
var blocks_count = 4; // or how many blocks do you have
for(var i = 1; i <= blocks_count; ++i){
    $( "input[name='radioset_" + i + "'" ).change(function() {
        if ($( "#option_A_" + i).prop( "checked" )) {
        // do option A thing for radioset_i
        } else {
        // do option B thing for rasioset_i
    });
}

答案 1 :(得分:-1)

这对我有用:

    $( "input[type=radio]").change(function(e) {
        var str = ($(this).attr("name"));
        var arr = str.split("_");
        if ($( "#option_A_" + arr[1] ).prop( "checked" )) {
            // do option A thing for this radio   
        } else {
            // do option A thing for this radio
        };
    });