Цепочка .ready и .resize в функцию? - PullRequest
0 голосов
/ 10 сентября 2011

Внутри этого объекта у меня есть свойство 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');  }
}

Обновление : это работает:

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

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

return func;

};

с этим синтаксисом использования:

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

* Обратите внимание, что в вызове должно быть myactions, а не myactions()

1 Ответ

2 голосов
/ 10 сентября 2011

Как насчет

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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...