繁体   English   中英

延迟事件处理程序直到另一个函数完成

[英]Delaying event handler until another function is completed

我们最近在我们的网站中实施了一个 3rd 方解决方案,为此我无法直接更新代码,但我可以添加自己的 javascript 来操作它。 此解决方案有一个按钮,可触发 AJAX 请求。 我想在提交 AJAX 请求之前运行一些我自己的自定义代码,并且只有在我的代码允许的情况下才提交它。

有没有一种方法可以在用我自己的函数覆盖绑定之前将该按钮的单击事件处理程序存储在变量或其他函数中,然后在我完成后触发原始事件处理程序函数?

希望这很清楚...

编辑:点击处理程序像这样添加到第 3 方解决方案中,确实相当标准。 但是我不能直接访问正在使用的控制器,所以我不能只复制函数。 此外,服务提供商偶尔会更新他们的代码,所以如果我复制了它,当他们更新他们的代码时它不会更新。

在此处输入图片说明

此解决方案有一个按钮,可触发 AJAX 请求。 我想在提交 AJAX 请求之前运行一些我自己的自定义代码,并且只有在我的代码允许的情况下才提交它。

无需深入研究 jQuery 的事件处理程序管理内部机制(可随时更改),最简单的方法可能是隐藏按钮并将其替换为您自己的按钮,然后在适当的时候触发按钮。 看评论:

 // === The original handler $("#the-btn").on("click", function() { console.log("Original handler ran"); }); // === Your code // Get and hide the original button var btn = $("#the-btn"); btn.hide(); // Create and add replacement var newBtn = $("<input type=button>"); newBtn.val(btn.val()); newBtn.on("click", function() { console.log("Your handler starting (I'm assuming an async process)..."); setTimeout(function() { console.log("Your handler is done, triggering original"); btn.click(); }, 800); }); newBtn.insertBefore(btn);
 <input type="button" id="the-btn" value="Do Something"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM