2012-11-20 64 views
0

我正在使用jQuery Boilerplate模式創建一個新的jQuery插件。你能幫我展示創建回調函數的最佳方法嗎?如何使用jQuery Boilerplate進行回調函數

// the semi-colon before function invocation is a safety net against concatenated 
// scripts and/or other plugins which may not be closed properly. 
;(function ($, window, undefined) { 

    // undefined is used here as the undefined global variable in ECMAScript 3 is 
    // mutable (ie. it can be changed by someone else). undefined isn't really being 
    // passed in so we can ensure the value of it is truly undefined. In ES5, undefined 
    // can no longer be modified. 

    // window and document are passed through as local variables rather than globals 
    // as this (slightly) quickens the resolution process and can be more efficiently 
    // minified (especially when both are regularly referenced in your plugin). 

    // Create the defaults once 
    var pluginName = 'defaultPluginName', 
     document = window.document, 
     defaults = { 
     propertyName: "value" 
     }; 

    // The actual plugin constructor 
    function Plugin(element, options) { 
    this.element = element; 

    // jQuery has an extend method which merges the contents of two or 
    // more objects, storing the result in the first object. The first object 
    // is generally empty as we don't want to alter the default options for 
    // future instances of the plugin 
    this.options = $.extend({}, defaults, options) ; 

    this._defaults = defaults; 
    this._name = pluginName; 

    this.init(); 
    } 

    Plugin.prototype.init = function() { 
    // Place initialization logic here 
    // You already have access to the DOM element and the options via the instance, 
    // e.g., this.element and this.options 
    }; 

    // A really lightweight plugin wrapper around the constructor, 
    // preventing against multiple instantiations 
    $.fn[pluginName] = function (options) { 
    return this.each(function() { 
     if (!$.data(this, 'plugin_' + pluginName)) { 
     $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); 
     } 
    }); 
    } 

}(jQuery, window)); 
+0

這不是很清楚你的意思是_callback函數_...你能否詳細說明一下? – elclanrs

+0

即:在init()中我有x和y。我需要使用回調函數返回這些值。 –

+0

然後只需返回值,用'data'實例化對象並調用你想要的方法。 – elclanrs

回答

0

我還是不明白你在這種情況下回調的意思。如果你想要的是一個返回值的方法,你必須創建一個data對象的實例,然後你可以調用你想要的方法。

var $instance = $('selector').plugin(options).data('plugin_pluginName'); 
var returnedValue = $instance.methodThatReturnsSomething();