我正在创建我想要用于项目的第一个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
}
});
});
如果按钮名称未定义到自定义设置中,我如何仍然使用默认按钮设置?
答案 0 :(得分:1)
.first
只是一个jQuery方法。它选择集合中的第一个元素。
init
方法是一个已定义的函数,然后立即调用(在这种情况下有点毫无意义),尽管您可以稍后在插件代码之外调用它(也毫无意义)。
至于问题的第二部分,你没有递归.extend
对象,因此嵌套对象值没有得到扩展。使用true
作为.extend
的第一个参数,使其更深:http://jsfiddle.net/ntdLu/1/