javascript - 将 .ready 和 .resize 链接到函数中?

标签 javascript jquery oop object triggers

在这个对象内,我有一个属性 Response.action这是在 jQuery 的 .ready 上触发代码的简写。和.resize同时地。下面代码块中的注释演示了其用法。 Response.action适用于 .ready但不在.resize上。谁能明白原因和/或建议如何使其对两者都适用?

window.Response = (function($, window, undefined) {

    var Response = {},  // object
        $window = $(window),
        $document = $(document); // cache selectors 

    /*
    Response.action()
    This triggers code on .ready *and* .resize 
    usage:
                Response.action( myactions );
                function myactions() { 
                    // do stuff
                }       
    */  
    action = function( code ) { 

        var code = ( code !== undefined ) ? wrap() : false; // apply wrap() if we have code

        function wrap() {
            $document.ready(function() {
                $window.resize(function() {
                    code // input
                }).resize(); // trigger resize handlers
            }); // close .ready function
        }

        return code; // wrapped code fires on .ready and .resize
    },
    Response.action = action;

    return Response; // return object

})(jQuery, window); // expose to global object

这是给 responsejs.com - 完整的库(正在进行中)就在那里。

我正在使用其他属性之一来测试它。 .band属性本身是可靠的:

Response.action( myactions() );
function myactions() { 
        if ( Response.band(600) ) { $('header').html('600px or wider'); }
        else { $('header').html('below 600px');  }
}

更新:这有效:

响应.action = 函数 ( func ) { if ( typeof func !== 'function' ) { return false; } }

$(function () {
    func();
    $window.resize( func );
}).resize();

return func;

};

使用以下语法:

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

*请注意,在调用中它需要是 myactionsmyactions() 相反

最佳答案

怎么样

window.Response = (function ( $, window, undefined ) {

    var Response = {};

    Response.action = function ( func ) {
        if ( typeof func !== 'function' ) { return false; }

        $(function () {
            func();
            $( window ).resize( func );
        });

        return func;
    };

    return Response;

})( jQuery , window );

关于javascript - 将 .ready 和 .resize 链接到函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372852/

相关文章:

javascript - 导入导出类的 typescript 发出 require(...) ,这会产生浏览器错误

javascript - 在 Vanilla JS 中使用 ReplaceWith 将一个元素替换为 DOMstring 或多个元素

jquery - 如何在 Jquery 中根据单选按钮选择闪烁数字?

jquery - 递归ajax调用

PHP, OOP - 表单验证

javascript - 来自 PHP 文件的 Google 图表数据

javascript - 使用 JavaScript 获取数据属性并将该属性替换为 var

python - python中类、对象和方法的混淆

Javascript:如何获取实例化某个对象的类?

javascript - 新手 : Why does this variable persist instead of getting reset?