Reputation: 387
WooCommerce:
I have some jQuery that loads on document.ready that effects the quantity input box. Works great.
My issue is that when I update the cart/delete item, the jQuery needs to run again because the AJAX call kills it (refreshes it). Is there some hook/filter I can add that will re-run my script again after a cart update? Ive searched and can't find anything (or maybe I'm not aware of what I am looking for).
Thank you!!!!
Upvotes: 21
Views: 48179
Reputation: 26319
The WooCommerce scripts have several custom jQuery events built in. Your own script can listen to these events and run your own code when they are triggered. The most obvious one for your case might be updated_cart_totals
but updated_wc_div
might also be helpful, I'm not sure without testing. Tested and works.
$( document.body ).on( 'updated_cart_totals', function(){
//re-do your jquery
});
Jan 2024 Update: I assume this will not work with the Cart/Checkout blocks, but only with the traditional cart/checkout shortcodes.
Upvotes: 66
Reputation: 180
In my case I have to add the following:
jQuery(document.body).on('removed_from_cart updated_cart_totals', function () {
location.reload();
});
Because I have a huge customization with js cart submit
Upvotes: 9
Reputation: 508
I also needed to run a function after user removes item from cart, and the above events updated_cart_totals
or updated_wc_div
didn't work for me.
After digging into the Woocommerce frontend code
[/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js]
I found these events:
$(document.body).on('added_to_cart removed_from_cart', do_magic);
These worked like a charm!
Upvotes: 8