代码之家  ›  专栏  ›  技术社区  ›  Josh

jquery-公开事件

  •  1
  • Josh  · 技术社区  · 14 年前

    我正在尝试编写自己的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 回复  |  直到 14 年前
        1
  •  3
  •   Nick Craver    14 年前

    您只需调用该方法,替换它:

    //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!"); });