插入在已注册的处理程序之前执行的JQuery单击处理程序

我想在我的应用程序的所有页面上为每个(Button,Anchor,Select)附加一个click事件处理程序,并且该处理程序应该在html中声明的已经附加的处理程序之前运行,如onclick="return SomeFunction('a','b');"

我在stackoverflow上发现了一个关于prepending处理程序的问题,这正是我想要的,问题的链接是: –

Jquery前置单击处理程序

但是,上面的代码不起作用,我怀疑它是否适用于提问者。 我根据我的要求编写的代码是: –

  $(document).ready(function() { $("input[type=button]").each(function() { // your button var btn = $(this); // original click handler var clickhandler = btn.attr("onclick"); btn.attr("onclick", "return false;"); // new click handler btn.click(function() { alert('Prepended Handler'); clickhandler(); }); }); }); function f2() { alert('Handler declared in HTML'); } 

此代码的输出应为:显示“Prepended Handler”的警报,然后是显示“以HTML格式声明的处理程序”的下一个警报。

但是,实际结果是:只有第一个警报出现而第二个警报没有出现。

如果您在此代码中发现任何问题,请告诉我。

而且,如何做到这一点。 ?

这应该重新排列您的点击处理程序。

 $(document).ready(function() { $("input[type=button]").each(function() { // your button var btn = $(this); var clickhandler = this.onclick; this.onclick = null; // new click handler btn.click(function() { alert('Prepended Handler'); }); btn.click(clickhandler); }); }); function f2() { alert('Handler declared in HTML'); }