0

我正在创建我想用于我的项目的第一个 jQuery 插件。但是,我所掌握的知识可能还不够。不过,我还想继续创作……

所以我的小插件中有这个部分:

jQuery 插件 - 默认设置:

;(function($) {

var defaults = {

    title               : 'miniBox - Title Spot!',
    description         : 'miniBox Description Spot. Write a short article or leave it blank!',

    buttons: {
        switcher        : true,
        nameButton_1    : 'Continue',
        nameButton_2    : 'Discard',
    }
};

现在下面我们有这部分:

$.fn.miniBox = function(customs) {
    var config = $.extend({}, defaults, customs);
    var $first = this.first();

    $first.init = function() {
        $('body').append( // -->
            '<div class="miniBox-wrap">'
        +       '<div class="miniBox-frame">'
        +           '<div class="miniBox-title"></div>'
        +           '<div class="miniBox-content">'
        +               '<div class="miniBox-description"></div>'
        +               '<div class="miniBox-buttons"></div>'
        +               '<div class="miniBox-counter"></div>'
        +           '</div>'
        +       '</div>'
        +       '<div class="miniBox-overlay"></div>'
        +   '</div>' // <--
        );

        var mB_buttonOne    = config.buttons.nameButton_1,
            mB_buttonTwo    = config.buttons.nameButton_2,
            mB_title        = config.title,
            mB_description  = config.description;

        // --> Confirmation Buttons - Settings OPEN //
        if(config.buttons.switcher === true) {
            $('.miniBox-buttons').append( // -->
                '<input type="button" id="agree" value=' + mB_buttonOne + '>'
            +   '<input type="button" id="disagree" value=' + mB_buttonTwo + '>'
            // <--
            );
        } else {
            $('.miniBox-buttons').remove();
        }
        // <-- Confirmation Buttons - Settings CLOSE //
        };
            $first.init();
    };

})(jQuery);

这让我有点困惑,我想这是第一次......

问题:

标题导致设置失败,所以这是另一个问题。

如果我设置默认标题和描述,然后创建自定义标题或/和描述,我的设置似乎正在工作......它有效,它将覆盖默认值。

但是,您可以阅读按钮的简短 if 语句......如果我的按钮切换器在默认值或自定义中设置为 false 或 true,它仍然有效并覆盖默认设置......但是,如果默认值和自定义都说:true 或 false。 ..按钮值变为“未定义”。

我不知道如何说总是只读取自定义设置,如果它们被定义并且忘记了默认值......或者类似的东西。我希望你们能理解我,希望我能找到答案。

问候,内纳德。

编辑:

似乎我需要在海关中完全定义一个按钮配置,以免得到“未定义”......我该如何解决这个问题?

默认值示例:

var defaults = {
    buttons: {
        switcher        : false,
        nameButton_1    : 'Continue',
        nameButton_2    : 'Discard',
    }
};

海关示例:

$(function() {
$().miniBox({
    title: 'Works flawlessly!',
    buttons: {
        switcher: true
    }
});

});

如果未在自定义设置中定义按钮名称,我如何仍使用默认按钮设置?

4

1 回答 1

1

.first只是一个jQuery方法。它从集合中选择第一个元素。

init方法是一个已定义的函数,然后立即调用(在这种情况下有点没有意义),尽管您可以稍后在插件代码之外调用它(也没有意义)。

至于你问题的第二部分,你没有递归.extending 对象,所以嵌套对象值没有得到扩展。用作使其深入true的第一个参数: http : //jsfiddle.net/ntdLu/1/.extend

于 2013-02-17T15:26:45.577 回答