jquery - 暴露事件

时间:2010-11-19 14:23:37

标签: jquery events jquery-plugins javascript-events

我正在尝试编写自己的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
        }

    });

};

??在于我如何解雇这个事件。我也希望有其他活动,如onerror,aftersubmit等。

1 个答案:

答案 0 :(得分:3)

你可以调用方法,替换它:

//fire beforesubmit

有了这个:

if(settings.beforesubmit) settings.beforeSubmit();

您也可以这样做,添加您想要的任何回调参数,例如:

if(settings.beforesubmit) settings.beforeSubmit.call(this, someVariable);

替代方案(不适合某些情况)是触发您自己的事件并让jQuery绑定模型完成工作,例如:

$(this).trigger("beforeSubmit");

然后在其他地方,绑定到事件,例如:

$(".someElement").bind("beforeSubmit", function() { alert("submit!"); });