我在哪里弄错了?那是一些语法错误吗?
custom.js:
(function($){
$.fn.marquee = function(options, callback){
// check callback
if(typeof callback == 'function'){
callback.call(this);
} else{
console.log("secound argumnt (callback) is not a function");
throw "callback must be a function";
return;
}
//set and overwrite default options
var defOptions = $.extend({
option1: 10,
option2: 'something'
}, options);
};
//plugin logic here
// ...
return this;
}(jQuery));
//END PLUGIN
现在我在同一个文件中尝试通过调用
来运行插件// RUN PLUGIN with options or leave empty for defeaults
$.marquee({
option1: 9,
option2: 'something else'
}, function(){
alert('some callback');
});
然后我得到这个错误(在chrome控制台中)......谁知道这里的问题是什么?:
Uncaught TypeError: $.marquee is not a function
有关Chrome控制台错误的更多详细信息:
(anonymous function) @ custom.js:25m.
Callbacks.j @ jquery-1.11.2.min.js:2m.
Callbacks.k.fireWith @ jquery-1.11.2.min.js:2m.
extend.ready @ jquery-1.11.2.min.js:2J @ jquery-1.11.2.min.js:2
答案 0 :(得分:1)
那是因为你已将它附加到jQuery的原型$.fn
。如果您的代码已经
$('some element').marquee({
option1: 9,
option2: 'something else'
}, function(){
alert('some callback');
});
在$.fn
处声明的插件是适用于元素的插件,并且在插件中引用了this
。
修复方法是在$
或jQuery
$.marquee = function {
// (...) Code here
}