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