【问题标题】:jQuery - exposing eventsjQuery - 暴露事件
【发布时间】:2010-11-19 14:23:37
【问题描述】:

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

【问题讨论】:

    标签: jquery events jquery-plugins jquery-events


    【解决方案1】:

    你可以只调用方法,替换这个:

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

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2018-09-17
      • 1970-01-01
      • 2015-07-26
      相关资源
      最近更新 更多