我想在我的应用程序的所有页面上为每个(Button,Anchor,Select)附加一个click事件处理程序,并且该处理程序应该在以html声明的已经附加的处理程序之前运行onclick="return SomeFunction('a','b');".
我在stackoverflow上发现了一个关于预装处理程序的问题,这正是我想要的,问题的链接是: -
但是,上面的代码不起作用,我怀疑它是否适用于提问者.我根据我的要求编写的代码是: -
<input type="button" value="Click 1" onclick="f2();" />
$(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');
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出应为:显示"Prepended Handler"的警报,然后是显示"以HTML格式声明的处理程序"的下一个警报.
但是,实际结果是:只显示第一个警报,而第二个警报不显示.
如果您在此代码中发现任何问题,请告诉我.
而且,如何做到这一点.?
我有一个按钮,已经有一个onclick事件和一个指定的功能.我希望在它前面添加另一个函数调用.我可以想象应该可以摆弄onclick属性(attr),但我不认为这是最佳实践.
您认为在现有onclick事件上添加函数调用的最佳做法是什么?