jQuery-公开事件

jQuery-公开事件,jquery,events,jquery-plugins,jquery-events,Jquery,Events,Jquery Plugins,Jquery Events,我正在尝试编写自己的jQuery插件。我的目标是将其附加到表单以覆盖提交。我有一些基本知识,但我的问题在于“暴露”事件 以下是我想做的: $('#myobject').myplugin({ setting1: 'somevalue', beforesubmit: function(){ ... } }); 这是我到目前为止所拥有的 $.fn.myplugin= function (options) { var settings = { settin

我正在尝试编写自己的jQuery插件。我的目标是将其附加到表单以覆盖提交。我有一些基本知识,但我的问题在于“暴露”事件

以下是我想做的:

$('#myobject').myplugin({

    setting1: 'somevalue',
    beforesubmit: function(){ ... }

});
这是我到目前为止所拥有的

$.fn.myplugin= function (options) {

    var settings = {
        setting1: '',
        beforesubmit: function() { return true; }
    };

    return this.each(function () {
        // If options exist, lets merge them
        // with our default settings
        if (options) {
            $.extend(settings, options);
        }

        //fire beforesubmit

        $(this).live("submit", function(){

            //do stuff
        }

    });

};

这个??关键在于我如何启动事件。我还想要其他事件,如OneError、aftersubmit等。

您可以调用该方法,替换为:

//fire beforesubmit
为此:

if(settings.beforesubmit) settings.beforeSubmit();
也可以这样做,添加所需的任何回调参数,例如:

if(settings.beforesubmit) settings.beforeSubmit.call(this, someVariable);
$(this).trigger("beforeSubmit");
$(".someElement").bind("beforeSubmit", function() { alert("submit!"); });

另一种方法(不适用于某些情况)是触发您自己的事件,并让jQuery绑定模型完成工作,例如:

if(settings.beforesubmit) settings.beforeSubmit.call(this, someVariable);
$(this).trigger("beforeSubmit");
$(".someElement").bind("beforeSubmit", function() { alert("submit!"); });
然后在其他位置绑定到事件,例如:

if(settings.beforesubmit) settings.beforeSubmit.call(this, someVariable);
$(this).trigger("beforeSubmit");
$(".someElement").bind("beforeSubmit", function() { alert("submit!"); });