如何在不修改“this”的情况下包装现有事件处理程序?

时间:2011-07-15 14:47:37

标签: javascript jquery

我正在使用一些具有表单提交处理程序的现有代码:

function AjaxFormSubmit(e) {
 [...]
 var form = $(this);
 [...]
}

要在我的视图代码中绑定处理程序,我有:

$('myForm').submit(AjaxFormSubmit);

我想要做的是在调用AjaxFormSubmit之前运行一些其他代码:

$('myForm').submit(function(e) {
doSomething();
AjaxFormSubmit(e);
});

问题是在AjaxFormSubmit中,对 $(this)的调用没有得到表单元素。实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

您需要确保在正确的上下文中调用this

$('myForm').submit(function(e) {
  doSomething();
  AjaxFormSubmit.call(this, e);
});

答案 1 :(得分:2)

$('myForm').submit(function(e) {
doSomething();
AjaxFormSubmit.call(this, e);
});