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 に答える