创建jQuery插件 - 设置失败

时间:2013-02-17 15:13:35

标签: javascript jquery jquery-plugins

我正在创建我想要用于项目的第一个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或者假...按钮值变为“未定义”。

我没有线索如何说永远只读自定义设置,如果它们被定义并忘记默认设置......或类似的东西。我希望你们能理解我,希望我能找到答案。

此致,Nenad。

编辑:

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

默认值示例:

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

海关的例子:

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

});

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

1 个答案:

答案 0 :(得分:1)

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

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

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