2011-08-22 64 views
0

这是我的第一个jQuery插件,我认为这是一个非常棒的=)。该插件需要一个元素并确保它始终在屏幕上。如果元素对于屏幕太大,则尽可能多地显示该元素。您可以通过上下滚动来测试working example。请注意内容如何尽力与您保持联系。处理jQuery插件中的事件

我的问题是,我不知道如何处理窗口布局的变化。假设用户调整窗口大小,我如何让插件处理它?我基本上需要重新从头开始重新计算一切。我可以绑定到$(window).resize(),但我该怎么做?在我的主要js块?在我的插件?我在里面做什么?

我有一种感觉,这是相对直接的,但我的大脑冻结。

回答

2

我将有一个不同的代码结构,这样的事情:

(function($){ 
    var _constants = { 
     default: {} 
    } 
    var _variables = { 
     options: {}, 
     jElement: undefined 
    } 

    var _private: { 
     init: function(jElement, options){ 
      _variables.jElement = jElement; 
      _variables.options = $.extend({}, _constants.default, options); 
      _private.setSize(); 
      $(window).resize(_private.setSize); 
      return jElement; 
     }, 
     setSize: function(){ 

     } 
     //... other private methods go here ... 
    } 

    $.fn.dynamicSidebar = function(options) { 
     return _private.init($(this), options); 
    } 
)(jQuery); 

编辑的相关

+0

感谢您对如何构建一个插件这个建议。我更关心如何按顺序获得我的活动。我需要处理调整大小和滚动事件。恐怕我不明白这是如何回答我的问题的。 – mrtsherman

+0

这个答案背后的全部想法是,代码的构造方式使您可以轻松地调用setSize方法,以便可以将它设置为$(window).resize()事件(就像在_private中完成的那样)。 init方法) – gislikonrad

+0

谢谢吉斯利 – mrtsherman