jQuery插件 - 在不同的父变量中从外部访问子值

时间:2012-07-25 10:51:12

标签: javascript jquery jquery-plugins

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

提前致谢

1 个答案:

答案 0 :(得分:1)

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

访问

var methods = {

    settings: null,

    init: function(options){

    ...