0

我正在尝试为我的需要编写一个简单的 jQuery 插件,使用本样式指南中第一个插件的变体。

;(function($) {
    var plugin_name = 'my_plugin',
        defaults = {};

    function Plugin ( element, options ) {
        this.element = element;

        this.options = $.extend( {}, defaults, options );

        this._defaults = defaults;
        this._name = plugin_name;

        this.init();
    }

    Plugin.prototype = {
        init: function () {
            // Plugin code - attempt to debug
            alert('hi');
        }
    }

    $.fn[plugin_name] = function ( options ) {
        return this.each(function () {
            if (!$.data(this, 'plugin_' + plugin_name)) {
                $.data(this, 'plugin_' + plugin_name, new Plugin( this, options ));
            }
        })
    }

})( jQuery );

但是,当我调用它时,它似乎没有被执行。在这里小提琴:http: //jsfiddle.net/DCRNU/

$(document).ready(function() {
    $.fn.my_plugin();
});

我错过了什么?

4

2 回答 2

0

您没有正确调用该函数。
如果你div的 HTML 中有一个元素,你可以这样调用你的函数:

$(document).ready(function() {
  $("div").my_plugin();
});

示例小提琴

于 2013-10-13T08:50:43.317 回答
0

那是因为这一行:return this.each

它期望得到一些可迭代的对象。但是没有什么可以循环的。

如果你添加这样的东西:

var array = [1];
$(array).my_plugin();

会好的。

于 2013-10-13T08:54:18.430 回答