我在这里关注教程:http://docs.jquery.com/Plugins/Authoring
我只是想为我们正在处理的项目创建一个简单的插件,它会在输入框旁边添加+/-符号,可以用来增加框的值。
所以我正在阅读教程,并且正在讨论有多种方法的部分,一切都很顺利,除了一个小故障。
所以这是代码:
(function( $ ) {
var methods = {
init: function(options) {
if (options) {
$.extend(settings, options);
}
this.css('float', 'left');
this.after('<div class="increment-buttonset"><div class="increment-button" style="float: left;">+</div><div class="decrement-button">-</div></div><br style="clear: both" />');
$('.increment-button').click(function() {
$.increment('change');
});
return this;
},
change: function() {
// Increment Decrement code would go here obviously
return this;
}
};
$.fn.increment = function(method) {
var settings = {
'step': 1
};
if (methods[method]) {
return methods[method].apply( this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
}
};
})( jQuery );
问题是$ .increment('change');
我想在点击时绑定+/-按钮以调用增量('更改')。我这样做时会出错。
Uncaught TypeError: Object function (a,b){return new c.fn.init(a,b)} has no method 'increment'
我在没有$的情况下尝试过。但这只是告诉我增量尚未定义。我在这里弄乱一些语法还是只是完全错了?
答案 0 :(得分:0)
解决方案很简单,你以错误的方式调用方法。它应该是
$('.increment-button').click(function() {
$(this).increment('change');
});
也就是说,因为添加到$ .fn.functionName的函数只能在$(selector).functionName等jQuery元素上调用。