只运行一系列触发事件中的最后一个事件



(这是一个jQuery/JS问题(

我在电子商务网站上有商品数量的+/-按钮。

点击这些,更改数字输入字段的值,然后触发该数字输入字段(使用quantityInput.change()(的更改事件,进而触发ajax更新购物车。

我想在触发ajax之前给用户一个点击按钮几次的机会。

我现在使用setTimeout来延迟ajax,这让用户体验更好了一点,但这只是一半的解决方案,因为最终ajax的触发次数与按钮的点击次数一样多,这是多余的。

我正在寻找一种只在"最后一次"点击时触发ajax的方法——例如,在3秒钟内没有后续点击的点击。

例如,如果一个产品"Apple"的当前数量是1,我想允许用户快速点击3次,将其更改为4,然后触发ajax来更新购物车。

再次,流程:

点击+/-按钮->>更新数字输入值->>触发更改事件(使用quantityInput.change()(->>调用ajax。

谢谢,Asaf

您几乎做到了-每次单击时,还可以使用clearTimeout清除现有超时(如果有(,以确保超时回调只在3秒钟内没有单击时运行。例如:

let timeout;
quantityInput.on('change', () => {
clearTimeout(timeout);
timeout = setTimeout(someFnThatUsesAjax, 3000);
});

(确保timeout是持久的并且在处理程序之外(

相关内容

最新更新