Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run jQuery after WooCommerce AJAX cart update

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!!!!

like image 996
Mando Avatar asked Sep 03 '16 23:09

Mando


3 Answers

The WooCommerce scripts have several custom 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
});
like image 153
helgatheviking Avatar answered Nov 10 '22 10:11

helgatheviking


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!

like image 25
yiddishe-kop Avatar answered Nov 10 '22 09:11

yiddishe-kop


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

like image 7
Rus Skazkin Avatar answered Nov 10 '22 08:11

Rus Skazkin