我的while循环不起作用?

时间:2015-07-23 01:47:31

标签: javascript jquery

我写了这段简单的代码,它确实有效!

    $(function () {
    $('form').each(function () {
        var form = $(this);
        form.find('[class^="custAction_"]').prop('disabled', true).trigger("chosen:updated");
        form.find('[class^="custAction_4b"]').button('disable');
        form.find('.custSwitch_1').change(function () {
            if (form.find('.custSwitch_1:checked').length) {
                form.find('.custAction_1').prop('disabled', false).trigger("chosen:updated").trigger("change");
          } else {
                form.find('.custAction_1').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
            }
        });
        form.find('.custSwitch_2').change(function () {
            if (form.find('.custSwitch_2:checked').length) {
                form.find('.custAction_2').prop('disabled', false).trigger("chosen:updated").trigger("change");
            } else {
                form.find('.custAction_2').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
            }
        });
        form.find('.custSwitch_3').change(function () {
            if (form.find('.custSwitch_3:checked').length) {
                form.find('.custAction_3').prop('disabled', false).trigger("chosen:updated").trigger("change");
            } else {
                form.find('.custAction_3').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
            }
        });
        form.find('.custSwitch_4').change(function () {
            if (form.find('.custSwitch_4:checked').length) {
                form.find('.custAction_4').prop('disabled', false).trigger("chosen:updated").trigger("change");
                form.find('.custAction_4b').button("enable");
          } else {
                form.find('.custAction_4').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
                form.find('.custAction_4b').prop("checked", false).button("refresh").button("disable", "disable");

            }
        });
    });
});

知道这是重复的,我想到了#34;而#34;循环可以在这里工作,所以试了这个......

        $(function () {
        $('form').each(function () {
            var form = $(this);
            var switchClass = $('form[class^="custSwitch_"]').length;
            form.find('[class^="custAction_"]').prop('disabled', true).trigger("chosen:updated");
            form.find('[class^="custAction_4b"]').button('disable');
            var countSw = 1;
            while (countSw < switchClass) {
                form.find('.custSwitch_'+countSw).change(function () {
                    if (form.find('.custSwitch_' + countSw + ':checked').length) {
                        form.find('.custAction_' + countSw).prop('disabled', false).trigger("chosen:updated").trigger("change");
                    } else {
                        form.find('.custAction_' + countSw).prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
                    }
                }); countSw++
            }
            form.find('.custSwitch_4').change(function () {
                if (form.find('.custSwitch_4:checked').length) {
                    form.find('.custAction_4').prop('disabled', false).trigger("chosen:updated").trigger("change");
                    form.find('.custAction_4b').button("enable");
                } else {
                    form.find('.custAction_4').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
                    form.find('.custAction_4b').prop("checked", false).button("refresh").button("disable", "disable");

                }
            });
        });
    });

但是,唉它没有! :-)我知道我错过了一些东西,可能是简单的东西。 .custSwitch_1,2和3类不再启用和禁用custAction_1,2和3类!!

的Si。

1 个答案:

答案 0 :(得分:0)

代码的问题在于变量countSw总是为3,因为当执行change侦听器中的代码时,变量的值为3。

while (countSw < switchClass) {
  form.find('.custSwitch_'+countSw).change(function () {
    doSomething(countSw);
  }); countSw++
}

function doSomething(countSw) {
  if (form.find('.custSwitch_' + countSw + ':checked').length) {
    form.find('.custAction_' + countSw).prop('disabled', false).trigger("chosen:updated").trigger("change");
  } else {
    form.find('.custAction_' + countSw).prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
  }                    
}

请注意,您的countSw现在作为参数传递。