变量undefined,(JQuery插件开发)

时间:2013-06-24 01:58:22

标签: jquery variables jquery-plugins undefined

我正在创建我的第一个基于jQuery的插件,但我遇到了问题。

我收到一条错误,指出当我尝试console.log时,var minHeight未定义。

(function ($) {
    $.fn.something = function (options) {
        var defaults = {
            selector: '.selector',
            minHeight: defaults.selector.height(),
            speed: 200
        }
        console.log(defaults.minHeight);
    };
})(jQuery);

1 个答案:

答案 0 :(得分:1)

要理解你想要达到的目标真的很难,但你目前的尝试方式有些问题。您正在尝试在定义对象本身(defaults.selector)之前设置对象的属性(defaults)。

为了完成它,最简单的方法是将minHeight的定义拉到其他行。你也许想看看jQuery的$.extend

(function ($) {
    $.fn.something = function (options) {
       var defaults = {
            selector: '.selector',
            speed: 200
       }
       defaults.minHeight = $(defaults.selector).height();
       console.log(defaults.minHeight);

       // extend() will set the values of 'options' that are empty with default's
       var options = $.extend({}, defaults, options);
       // options.minHeight will be the height of '.selector' if no options are
       // given, or 'minHeight' if one is given as parameter
       console.log(options.minHeight);
    };
})(jQuery);

// testing code so you get what I mean
$().something({minHeight: 10});
$().something();

请参阅the code above in action(打开控制台)。