在jquery插件中处理事件

在jquery插件中处理事件,jquery,events,jquery-plugins,Jquery,Events,Jquery Plugins,这是我的第一个jQuery插件,我认为这是一个非常棒的插件=)。插件接受一个元素并确保它始终在屏幕上。如果元素对于屏幕来说太大,则尽可能多地显示。您可以通过简单地上下滚动来测试。请注意内容如何尽最大努力与您保持联系 我的问题是,我不知道如何处理窗口布局的更改。假设用户调整窗口大小,我如何让我的插件处理它?我基本上需要从头开始重新计算一切。我可以绑定到$(window).resize(),但是我在哪里可以这样做呢?在我的主js块中?在我的插件里?我在里面做什么 我有一种感觉,这是相对简单的,但我的

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

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


我有一种感觉,这是相对简单的,但我的大脑冻结了。

我会有一个不同的代码结构,类似这样:

(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);

为相关性而编辑

感谢您提出关于如何构建插件的建议。不过,我更关心的是如何安排我的活动。我需要处理调整大小和滚动事件。恐怕我看不出这是如何回答我的问题的。这个答案背后的整个想法是,代码的结构使您可以轻松地调用setSize方法,以便将其设置为$(window).resize()事件(就像在_private.init方法中所做的那样)