我想在我的应用程序的所有页面上为每个(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格式声明的处理程序"的下一个警报.
但是,实际结果是:只显示第一个警报,而第二个警报不显示.
如果您在此代码中发现任何问题,请告诉我.
而且,如何做到这一点.?
这应该重新排列您的点击处理程序.
$(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');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7060 次 |
| 最近记录: |