jquery绑定提交事件 – 查找调用者

我怎样才能找到绑定事件的调用者/发件人。

$(this).bind("submit", function(caller) { ... }); 

我发现我可以使用“caller.originalEvent.explicitOriginalTarget”,但这仅适用于firefox。

编辑:

我正在使用来自position-relative.net的jqueryvalidation库我想让它如果一个按钮在发送者上有一个名为“bypass”的类,这使得validation引擎只返回true,因此可以提交表单。 即我正在使用ASP.NET,所有按钮按下都是回发(表单提交)。 我只是想做一个后退按钮。

我添加了这段代码

 if ((caller.originalEvent.explicitOriginalTarget != null) && (caller.originalEvent.explicitOriginalTarget.className == "bypass")) { return true; } 

在第71行,就在这条线下

 $(this).bind("submit", function(caller) { // ON FORM SUBMIT, CONTROL AJAX FUNCTION IF SPECIFIED ON DOCUMENT READY 

意见和建议表示赞赏。

谢谢

更新:根据您的评论,您正在查看哪个提交按钮触发了提交。 您无法使用表单的submit事件执行此操作 – 但您可以使用提交按钮上的click事件:

 $(this).find("input[type=submit]").click(function() { var bypass = $(this).hasClass("bypass"); }); 

提交按钮的click事件发生在表单的submit事件之前,因此您可以使用它来设置标志,然后在表单的提交处理程序中使用该标志。 标志可以在某处的JavaScript代码中,表单上的隐藏字段,您添加到表单元素的属性等。

关于targetthis相关的以下信息可能不再与您的问题直接相关,但我将其离开,因为需要了解targetthis人可能会找到您的问题,因此它可能对他们有用。

event.target是事件实际发生的元素。 对于冒泡事件,这可能是您附加处理程序的元素的后代:

 $(this).bind("submit", function(event) { var target = event.target; }); 

this是您设置事件处理程序的元素(这由jQuery确保 ):

 $(this).bind("submit", function(event) { // `this` is the element you hooked the event on }); 

由于您正在使用submit事件并直接挂接表单,因此我希望targetthis相同。

三个例子 (两个关于forms,一个只是一般)

1.A. 表单提交和JavaScript变量 ( 实时版本 )的示例

这是一个使用表单提交的示例,区分targetthis ,并显示连接提交按钮的单击事件,以便我们知道他们是否具有“绕过”类。 这在JavaScript代码中使用了一个标志:

      Target Example     

1.B. 表单提交和属性 ( 实时版本 )的示例

这与上面的示例相同,但在JavaScript代码中使用属性而不是标志:

      Target Example     

2. targetthis ( 实时版本 ) 之间存在差异的示例

这个例子不再与你的问题相关,但是我将它留给任何需要一个targetthis target的例子。

      Target Example     

I'm one, and this is a child element

I'm two, and this is two children deep

I'm three, there are no child elements here


​​​​​​​​​​​