2010-11-19 50 views
1

我想写我自己的jquery插件。我的目标是将其附加到表单以覆盖提交。我有基础知识,但我的问题在于“揭露”事件。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等

回答

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