插入一个JQuery点击处理程序,在已经注册的点击处理程序之前执行

Insert a JQuery click handler that executes before the ones already registered

本文关键字:程序 处理 注册 执行 JQuery 一个 插入      更新时间:2023-09-26

我想在我的应用程序的所有页面上附加一个点击事件处理程序(按钮,锚,选择),并且该处理程序应该在已经在html中声明的附加处理程序(如onclick="return SomeFunction('a','b');")之前运行。

我发现了一个关于stackoverflow前置处理程序的问题,这正是我想要的,问题的链接是:-

Jquery preend click handler

但是,上面的代码不起作用,我怀疑它是否对请求者起作用。我根据自己的要求编写的代码是:-

<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",然后下一个警告显示"Handler声明在HTML中"。

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

如果你在这段代码中看到任何问题请告诉我。

如何做到这一点呢?div ?

这会重新安排你的点击处理程序。

$(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');
}