链.ready和.resize成function?
在这个对象中,我有一个属性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()
怎么样
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 );