有没有办法缩短这个jQuery?

时间:2015-09-06 18:14:46

标签: javascript jquery

我有这个jQuery,我知道它是重复的。 我需要一些帮助来清理它,我还是jQuery / JavaScript的新手!

    $(function () {
    $('form').each(function () {
        var form = $(this);
        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, 'value':''}).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, 'value':''}).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, 'value':''}).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");
            } else {
                form.find('.custAction_4').prop({'disabled': true, 'selectedIndex': 0, 'value':''}).trigger("chosen:updated").trigger("change");
            }
        });
        form.find('.roof').change(function () {
            if (form.find('.roof:checked').length) {
                form.find('.sunroof').prop('disabled', false).trigger("chosen:updated").trigger("change");
                form.find('.antenna').button("enable");
            } else {
                form.find('.sunroof').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
                form.find('.antenna').prop("checked", false).button("refresh").button("disable", "disable");
            }
        });
    });
});

我不知道是否使用循环,或类似

className.replace("custAction_", "custSwitch")

以及如何实施它......现在已经搜索了几天,似乎无法解决它的问题!

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

你可以使用循环。

$('form').each(function () {
    var form = $(this);
    for(var i = 1; i<= 4 ; i++){
        form.find('.custSwitch_' + i ).change(function () {
            if (form.find('.custSwitch_' + i + ':checked').length) {
                form.find('.custAction_' + i ).prop('disabled', false).trigger("chosen:updated").trigger("change");
            } else {
                form.find('.custAction_' + i ).prop({'disabled': true, 'selectedIndex': 0, 'value':''}).trigger("chosen:updated").trigger("change");
            }
        });
    }
    form.find('.roof').change(function () {
        if (form.find('.roof:checked').length) {
            form.find('.sunroof').prop('disabled', false).trigger("chosen:updated").trigger("change");
            form.find('.antenna').button("enable");
        } else {
            form.find('.sunroof').prop({'disabled': true, 'selectedIndex': 0}).trigger("chosen:updated").trigger("change");
            form.find('.antenna').prop("checked", false).button("refresh").button("disable", "disable");
        }
    });
});

答案 1 :(得分:0)

感谢您的帮助,实际上得到了一些咖啡:-)并制定了这个解决方案...

            var switches = [1, 2, 3, 4];
        $.each(switches, function(index, value) {
            form.find('.custSwitch_' + value).change(function () {
                if (form.find('.custSwitch_' + value + ':checked').length) {
                    form.find('.custAction_' + value).prop('disabled', false).trigger("chosen:updated").trigger("change");
                } else {
                    form.find('.custAction_' + value).prop({'disabled': true, 'selectedIndex': 0, 'value': ''}).trigger("chosen:updated").trigger("change");
                }
            });
        });

不知道是否有更短的路......但我现在很开心! : - )