我想为应用程序中所有页面上的每个(Button, Anchor, Select)附加一个单击事件处理程序,并且该处理程序应在已在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');
}
这段代码的输出应该是:一个警报显示“Prepended Handler”,然后是下一个警报显示“在HTML中声明的处理程序”。
但实际结果是:只有第一个警报出现,第二个警报没有出现。
请告诉我您是否在此代码中发现任何问题。
如何解决这个问题?
this.onclick = null;
替代btn.attr("onclick", "return false;");
。 - Mathias Bynens