2012-07-07 80 views
0

我已经开发了一个jQuery插件,它具有默认选项:会员变成未定义

$.fn.incromentor.defaults = { 
    max : 65355, 
    min : 0 
}; 

在插件的初始化,我合并用户选择用插件的默认选项使用$.extend

function init($elm, options) 
{ 
    this.$element = $elm; 
    this.options = $.extend({}, $.fn.incromentor.defaults, options); 
} 

所以问题是,如果用户设置minmax0,该属性变成未定义!
这是为什么,我如何存储一个简单的0?

这里一个的jsfiddle:http://jsfiddle.net/KDXa6/2/

编辑
在JSLint的掉毛的代码后,错误dissapeared所以我怀疑那里是我的打字一个不起眼的错误。

+3

无法重现:http://jsfiddle.net/XYxTp/ – 2012-07-07 16:40:36

+0

它即使使用jQuery 1.2.6也能工作。你不是错误地输入了一些东西,有效地执行''.extend({},undefined,options)';'? – biziclop 2012-07-07 16:41:42

+0

mmm,这就是我怀疑的......我用完整的代码创建了一个JSFiddle,我在其中放置了一个console.log()来显示我的意思:http://jsfiddle.net/KDXa6/ ​​ – 2012-07-07 16:52:21

回答

0

$ .fn.incromentor.defaults = {}会覆盖您的默认选项,因此其他内容(如more_text,less_text)会变为未定义。你的用户应该通过他们的选择到构造如

$('#myel').Incrementor({ max : 65355, min : 0}); 

-

$这$(本)http://jsfiddle.net/KDXa6/1/

+0

好的,这是一个错误,但没有解决问题 – 2012-07-08 19:13:52

+0

看到更新anwswer,jsfiddle似乎下降,所以现在不能测试 – worenga 2012-07-09 11:04:15

+0

其中$ .fn.incromentor.defaults被设置为{}? – 2012-07-09 16:27:17