我是jQuery的新手,特别是JavaScript。
我正在尝试创建一个jQuery插件,但在回调事件方面遇到了一些困难。我想将回调事件包含在不同的函数中,这样插件就会有点灵活。
以下是代码:
(function($, undefined){
var methods = {
init: function(options){
var settings = $.extend({
// Default settings
'fadeInOutSpeed' : 100,
// the rest of default settings ...
// Callback events
onOpenBefore : function(){},
onOpen : function(){},
onOpenedCloseBefore : function(){}
// the rest of the callback events...
}, options);
// code goes here...
return this.each(function(){
// code goes here
});
},
destroy: function(){
// code goes here
},
open: function(){
console.info('method open accessed');
},
close: function(){
console.info('method close accessed');
},
update: function(){
console.info('method update accessed');
}
};
function gui_selectbox_open(param, event){
// HOW TO PUT A CORRECT CALLBACK CODE HERE ?
settings.onOpenBefore.call(param, event);
// function code goes here
settings.onOpenAfter.call(param, event);
};
在函数gui_selectbox_open(param,event)
内部,开头有一行,我想放置一个回调事件,所以我可以在从外部初始化插件时正确访问它,这给了我一个JavaScript错误,告诉我settings.onOpenBefore...
未定义。如何定义?
提前致谢
答案 0 :(得分:1)
您的变量settings
被定义为init()
对象中methods
函数的本地变量。要使其在外部可访问,您可以在init
函数之外定义它并将其作为methods.settings.yourMethod(..)
即
var methods = {
settings: null,
init: function(options){
...