Jquery,在回调中设置函数参数

时间:2012-07-02 09:17:06

标签: jquery jquery-plugins

我正在尝试编写我的第一个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);

1 个答案:

答案 0 :(得分:2)

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

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

然后你可以写:

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