如何改进jquery函数

How to Improve jquery function

本文关键字:函数 jquery 何改进      更新时间:2023-09-26

我正在做一个验证,它工作得很好,但是我有很多重复的代码,找不到改进它的方法。这是:

function validate( active ){
    if( active[0].id === "mod_formSteps-1" ){
        var $inputs = $("#formSteps-1 :input:not(:submit)");
        var value = true;
        $inputs.each(function() {
            if( $(this).val().length < 1 || $(this).hasClass("error")){
                value = false;
            }
        });
        return value;   
    }
    else if( active[0].id === "mod_formSteps-2" ){
        var $inputs = $("#formSteps-2 :input:not(:submit)");
        var value = true;
        $inputs.each(function() {
            if( $(this).val().length < 1 || $(this).hasClass("error")){
                value = false;
            }
        });
        return value;   
    }
    ...
    ...
    else{
        alert("something is wrong");                
    }           
    return true;
}   

现在我有四个,如果是相同的只是改变参数"mod_formStepsN""#formSteps-1"

像这样的

function validate(active) {
    var numb   = active.prop('id').split('-').pop(),
        inputs = $("#formSteps-"+numb+" :input:not(:submit)"),
        value  = true;
    inputs.each(function () {
        if ($(this).val().length < 1 || $(this).hasClass("error")) {
            value = false;
        }
    });
    return value;
}

为什么不直接:

function validate( active ){
    if(active[0].id != "")
    {
        var $inputs = $("#"+active[0].id+":input:not(:submit)");
        var value = true;
        $inputs.each(function() {
            if( $(this).val().length < 1 || $(this).hasClass("error")){
                value = false;
            }
        });
        return value;
    }
    else{
        alert("something is wrong");                
    }           
    return true;
}