0

我在一个片段中有以下函数调用者:

// del
if ( maxDelivery > 0 ) {
    if ( maxDelivery === 1 ){
        delAdressFunc( dels );
    } else {
        for ( i = 0; i < maxDelivery; i += 1 ){
            delAdressFunc( dels[i] );
        }
    }
}

// ajax
if ( maxAjaxTables > 0 ){
    if ( maxAjaxTables === 1 ){
        getAjaxTable( ajx, 0 );   
    } else {
        for ( j = 1; j <= maxAjaxTables; j += 1){
            getAjaxTable( ajx[j-1], j )
        }
    }
}

因此,两个函数调用的设置几乎相同。

问题:
有没有办法将两者结合成一个“调用者”来保存一些重复的代码?

谢谢!

编辑
抱歉省略......dels并且ajx都是元素选择器,我正在构建如下:

dels = $('.selectDeliveryAdress').filter(function() { return $(this).jqmData("bound") !== true; });
maxDelivery = dels.length;

我需要确保该函数只在每个元素上被调用一次,所以我jqmData("bound")delAdressFunc().

因此,它将是 0、1(最有可能)或 2+ 个元素。ajxmaxAjaxTables(= ajx.length )相同

4

1 回答 1

1
function caller(obj, max, func) {
    if ( max > 0 ) {
        if ( max === 1 ){
            func( obj );
        } else {
            for ( i = 0; i < max; i += 1 ) {
                func( obj[i] );
            }
        }
    }
}

caller(dels, maxDelivery, delAdressFunc);
caller(ajx, maxAjaxTables, getAjaxTable);
于 2012-11-18T21:05:41.777 回答