试图编写一个jQuery插件,但我不知道如何从init调用一个方法

时间:2013-04-14 13:19:26

标签: jquery

jsFiddle:http://jsfiddle.net/bg9vL/

控制台输出:

  

未捕获的TypeError:对象[object global]没有方法'each'

 var methods = {

    init: function (options) {

        // Create some defaults, extending them with any options that were provided
        var settings = $.extend({
            'maxWidth': 0,
            'maxHeight': 0,
            'forceAspect': true
        }, options);

        return this.each(function () {

            // if max size wasn't specified, position only
            var nosize = settings.maxWidth === 0 || settings.maxHeight === 0;
            var container = $(this).parent();

            $(this).css('position', 'relative');

            // fit when window is resized
            $(window).bind('resize.tailorfit', methods.fit);

            // fit when page has loaded
            $(window).bind('load.tailorfit', methods.fit);

            // fit on initial load
            methods.fit.apply();
        });

    }, ...

2 个答案:

答案 0 :(得分:1)

我敢打赌,你需要用jQuery标记来包装它。

...
$(this).each(
...

它不会将它识别为jQuery对象,因此每个函数都不可用。

您之后确实存在容器问题,应该可以轻松解决。

答案 1 :(得分:1)

methods.fit.apply();

使用全局对象调用fit,没有方法each

现在,您可以通过在$(this)函数中执行fit来解决此问题,但我不确定这是您想要做的事情。

另请注意,您的jsFiddle不会执行给$('.image-container > img').load

的回调