问题描述
我使用的是Magento,遇到的问题是在页面完全加载结果之前单击“添加到购物车”按钮会导致行为不一致。
我想做的是将按钮单击的处理程序推迟到页面加载之后。 我正在考虑将按钮的文本更改为“添加到购物车”,以便用户知道他的点击已被注册。
推迟处理程序的最佳方法是什么?
我想我可以在单击时注册一个变量,然后使用$jQuery.ready()函数检查该变量,但是有一种方法可以在现有处理程序中完成所有操作。
考虑到Magento中的代码块如何工作,添加一个额外的代码块可能并不容易。
1楼
freedomn-m
0
2019-02-21 13:33:48
有没有办法在现有的[click event]处理程序中执行此操作
当调用jquery文档准备就绪时,它将在文档准备就绪时运行-但是,如果在文档准备就绪之后调用它,则将立即进行回调。
因此,您可以将事件处理程序更改为:
$(document).on("click", "#mybutton", function() {
var btn = $(this);
btn.text("loading...");
$(function() {
btn.text("processing...");
// process button here, example:
btn.closest("form").submit();
});
});
如果在文档准备就绪之前单击按钮,则单击事件处理程序的内部文档就绪将在文档准备就绪时排队并运行。
如果在文档准备就绪后单击按钮,则click事件处理程序的内部文档就绪将立即运行。