1

我是 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...没有定义。如何定义它?

提前致谢

4

1 回答 1

1

您的变量settings被定义为对象init()内部函数的本地变量methods。要使其在外部可访问,您可以在init函数外部定义它并将其访问为methods.settings.yourMethod(..)

IE

var methods = {

    settings: null,

    init: function(options){

    ...
于 2012-07-25T11:03:40.320 回答