需要一些帮助编写自定义jQuery插件

时间:2010-01-18 20:48:10

标签: javascript jquery jquery-plugins

请查看以下内容:

jQuery.fn.jqPos = function(target, settings) {
    settings = jQuery.extend({
        offset: [ 0, 0 ]
    }, settings);

    return this.each(function() {
        magic($(this), target, settings);
        $(window).resize(function(){
            magic($(this), target, settings);
        });
    });

    function magic(self, target, settings) {
        // Here I position self close to target
    }
};

当我第一次初始化插件时,这非常有效,例如$('div#one').jqPos($('div#two'));,魔术方法应该运行。但是在事件window.resize没有任何反应(我希望它使用相同的设置和参数运行相同的方法)!

为什么?以及如何克服?

编辑:在magic-method(在window.resize中),参数都是undefined

1 个答案:

答案 0 :(得分:1)

您对this $(window).resize(function(){ magic($(this), target, settings); }); this所指的内容不再引用您的元素而非window本身感到困惑。尝试:

 return this.each(function() {
        var $this = $(this);
        magic($this, target, settings);
        $(window).resize(function(){
            magic($this, target, settings);
        });
    });