【问题标题】:using .each to execute array of functions on .resize使用 .each 在 .resize 上执行函数数组
【发布时间】:2011-11-14 13:35:14
【问题描述】:

在名为 Response 的对象中,这可以同时触发 .ready.resize 上的函数...

Response.action = function ( func ) {
    if ( typeof func !== 'function' ) { return false; } // If func is not a function, return false.
        $(function () { func(); $(window).resize( func ); }); // 
    return func;
}; // Response.action

...用这个来称呼它:

Response.action( myfunc );
function myfunc() { 
    //do stuff
}

(我们在 this thread 中解决了这个问题。)

我想制作另一个版本,可以对 array 函数做同样的事情,用法如下:

Response.actionSet( [myfunc1, myfunc2] );
function myfunc1() { 
    //do stuff
}
function myfunc2() { 
    //do stuff
}

我尝试了下面的方法以及我能想象到的所有其他咒语,但我没有让它起作用。也没有错误信息。任何人都可以推荐如何使它工作:

Response.actionSet = function ( arr ) {
        if ( arr.isArray !== true ) { return false; } // If arr is not an array, return false.
        $.each(arr, Response.action(this)); // iterate over arr array
        return arr;
}; // Response.actionSet

【问题讨论】:

    标签: javascript jquery arrays object each


    【解决方案1】:

    你有一个小错误;应该是$.each(arr, function() { Response.action(this); });

    Response.actionSet = function(arr) {
        if(!$.isArray(arr)) return false;
        $.each(arr, function() { Response.action(this); });
        return arr;
    };
    

    【讨论】:

    • 试过了(谢谢),但这也不起作用。值得注意的是,如果我将回调更改为Response.actionSet( [myfunc1(), myfunc2()] );,那么它适用于.ready,但不适用于.resize。没有括号,Response.actionSet 什么也没有。 Response.action 仅适用于不带括号的 .resize,所以我认为这需要相同。
    • @ryanve 好吧,如果你添加(),你会在现场调用这些函数(甚至在输入actionSet 之前),所以它显然“准备就绪”,duh :)
    • Alxandr, @Šime Vidas 你们都是摇滚明星!!
    猜你喜欢
    • 1970-01-01
    • 2019-02-22
    • 2012-02-27
    • 2023-04-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多