1

我正在尝试编写我的第一个 jquery 插件,但遇到了一些困难。

代码片段:

在这里,我正在初始化我的插件并设置 MyEvent 发生时应该执行的函数。

$("#myMap").MyPlugin({ myEvent: function() { alert("test"); } });

这是我的插件脚本中的功能

function setEvents(options) {
            $.each(options, function(event, fn) {
                if (typeof (fn) == 'function') {
                    if (event == "myEvent") {
                        $(myDiv).click(fn);
                    }
                }
            });
        }

这很好用,但我想在事件发生时从插件中检索信息。基本上我想接收我在“setEvents”函数中设置的参数。

$("#myMap").MyPlugin({ myEvent: function(myParam) { alert(param); } });

我似乎无法弄清楚这一点,有人可以指出我正确的方向。

更新:我当前插件脚本的更完整片段

(function($) {
    var defaults = {
        width: 300,
        height: 300,
        myEvent: null
    };

    $.fn.myPlugin = function(options) {
        var options = $.extend(defaults, options); 
        var myDiv = $(this);
        return this.each(function() {
            setEvents(options);
        });
})(jQuery);
4

1 回答 1

2

由于事件被您的插件myEvent映射到click事件,您可以将参数映射传递给click()以便最终将其传递给您的处理程序:

if (typeof(fn) == "function") {
    if (event == "myEvent") {
        $(myDiv).click({
            param: myParam
        }, fn);
    }
}

然后你可以写:

$("#myMap").MyPlugin({
    myEvent: function(event) {
        alert(event.data.param);
    }
});
于 2012-07-02T09:22:55.777 回答