我正在使用一个应该接受选项的jquery插件,但不是出于某种原因。 (也许它从未完成?)
代码已经设置为接受选项,但似乎没有传递选项对象。
这是插件构造函数:
$.fn.extend({ // extend jQuery.fn object
pluginName: $.pluginName.construct
});
哪个电话:
$.extend({
pluginName: new function(options) {
var defaults = {bla: 1};
var options = $.extend(defaults, options);
....
this.construct = function() {
return this.each(function() {
.....
}
}
});
所以,我对第一段代码进行了以下更改:
$.fn.extend({ // extend jQuery.fn object
pluginName: function(options) {
return $.pluginName.construct(options);
}
});
认为这很容易。 (我从未创建过jquery插件)。但是,它现在给了我一个错误:
TypeError: 'undefined' is not a function (evaluating 'this.each')
我确定它不正确,因为.construct方法不采用选项,但是“new function(options)”方法会这样做,其次,我可能需要以某种方式传递$ this。
任何人都可以给我一个如何解决这个问题的提示吗?
它应该可以这样调用:
$('#id').pluginName({first: true, blabla: "yes"});
编辑:我目前对插件的更改可在此处找到:http://jsfiddle.net/fbF8w/ - 如果有人想仔细看看。
编辑:让它运转起来。没关系。感谢。
谢谢, 韦斯利
答案 0 :(得分:0)
我不知道你正在使用什么教程,但我不确定这一部分:
this.construct = function() {
return this.each(function() {
.....
}
}
尝试像这里描述的那样(我已经以这种方式实现了很多插件):http://www.queness.com/post/112/a-really-simple-jquery-plugin-tutorial
(function($){
$.fn.extend({
//pass the options variable to the function
pluginname: function(options) {
//Set the default values, use comma to separate the settings, example:
var defaults = {
padding: 20,
mouseOverColor : '#000000',
mouseOutColor : '#ffffff'
}
var options = $.extend(defaults, options);
return this.each(function() {
var o = options;
//code to be inserted here
//you can access the value like this
alert(o.padding);
});
}
});
})(jQuery);