在这个对象中,我有一个属性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的 - 完整的lib(正在进行中)就在那里。
我正在使用其他属性之一来测试它。 .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()
答案 0 :(得分:2)
怎么样
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 );